2010-01-13 18 views
7

Dizini ve dosyaları görüntüleyen başka bir paneli görüntüleyen bir ağacım var. Şu anda görüntülenen dosyaların simgeleri yok. Tek bildiğim dosyaya giden yol. Ne yapmaktan hoşlandığım, o dosya simgesinin o panelde görüntülenmesini sağlamak. Olmak için çıktıya ihtiyacım var ve Image.source. Şu anda bu i benim itme arayıp ile varsayılan simgesini değiştirmeye çalışan OradanWPF penceresinde görüntülenecek belirli bir yoldan Simgeler Yükleme

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; 

ne var:

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

ic listeye verilen öğedir, f.fullname yolu içerir burada olsun ve görüntünün

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

o çalışmıyor kümesi ve bu buna farklı türde döküm olamaz diyor denedim birçok yollardan biridir. Bunu yapmanın bir yolu var mı?
Tamamen kayboldum.

cevap

4

img'un standart bir Image kontrol olduğunu varsayıyorum.

Image mülkünüz, ImageSource numaralı telefonun belirli bir türüdür. CreateBitmapSourceFromHIcon, InteropBitmap adlı bir iç sınıf örneğini döndürür; bu, BitmapImage'a dönüştürülemez; bu da bir hatayla sonuçlanır.

Sen ImageSource size özelliğini değiştirmek gerekir (veya BitmapSource, CreateBitmapSourceFromHIcon döner ve ImageSource devralır) bu gibi:

public ImageSource Image 
{ 
    get { return img.Source; } 
    set { img.Source = value; } 
} 
İlgili konular