2010-01-13 8 views
7

디렉토리를 표시하는 트리와 파일을 표시하는 다른 패널이 있습니다. 현재 표시된 파일에는 아이콘이 없습니다. 내가 아는 전부는 파일에 대한 경로입니다. woudl이하는 일은 해당 파일 아이콘을 해당 패널에 표시하는 것입니다. 출력물과 Image.source가 필요합니다. 현재이 내가 내 itme를 호출하여 기본 아이콘을 변경하려고 거기에서주어진 경로에서 아이콘을로드하여 WPF 창에 표시

private ImageSource GetIcon(string filename) 
    { 
     System.Drawing.Icon extractedIcon = System.Drawing.Icon.ExtractAssociatedIcon(filename); 
     ImageSource imgs; 

     using (System.Drawing.Icon i = System.Drawing.Icon.FromHandle(extractedIcon.ToBitmap().GetHicon())) 
      { 
       imgs = Imaging.CreateBitmapSourceFromHIcon(
             i.Handle, 
             new Int32Rect(0, 0, 16, 16), 
             BitmapSizeOptions.FromEmptyOptions()); 
      } 

     return imgs; 

이 무엇 :

ImageSource i = GetIcon(f.fullname) 
ic.image = i 

ic이 목록에 지정된 항목으로, f.fullname 경로를 포함 여기 GET 및 이미지

 public BitmapImage Image 
     { 
      get { return (BitmapImage)img.Source; } 
      set { img.Source = value; } 
     } 

그것은 작동하지 않는 집합이며, 이것은 내가 그것이 다른 유형의 캐스팅 어차피 말한다 시도한 여러 방법 중 하나입니다. 누구든지이 일을 할 수있는 방법이 있습니까?
전 완전히 잃었습니다.

답변

4

저는 img이 표준 Image 컨트롤이라고 가정합니다.

속성의 유형은 BitmapImage이며 ImageSource의 특정 종류입니다. CreateBitmapSourceFromHIconInteropBitmap이라는 내부 클래스의 인스턴스를 반환하며 이는 BitmapImage으로 변환 할 수 없으므로 오류가 발생합니다.

당신은 ImageSource 당신에게 속성을 변경해야합니다 (또는 BitmapSource, CreateBitmapSourceFromHIcon 반환 및 ImageSource을 상속)과 같이 :

public ImageSource Image 
{ 
    get { return img.Source; } 
    set { img.Source = value; } 
} 
관련 문제