2010-01-13 25 views
7

Tôi có một cây hiển thị thư mục và một bảng hiển thị các tệp khác. Ngay bây giờ các tập tin được hiển thị không có biểu tượng. Tất cả tôi biết là đường dẫn đến tập tin. Những gì tôi woudl muốn làm là nhận được rằng biểu tượng tập tin để hiển thị trong bảng điều khiển đó. Tôi cần đầu ra và Image.source. Hiện nay đây là những gì tôi cóĐang tải các biểu tượng từ một đường dẫn nhất định để hiển thị trong cửa sổ 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; 

Từ đó tôi gọi itme của tôi và cố gắng thay đổi biểu tượng mặc định của nó với:

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

ic là mục đưa vào danh sách, f.fullname chứa đường dẫn đây là get và tập hợp các hình ảnh

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

nó không làm việc và đây là một trong nhiều cách tôi đã thử nó nói nó không thể đúc các loại khác nhau. Có ai có cách để làm điều này không?
Tôi hoàn toàn bị mất.

Trả lời

4

Tôi giả định rằng img là điều khiển tiêu chuẩn Image.

Thuộc tính Image của bạn thuộc loại BitmapImage, là loại cụ thể là ImageSource. CreateBitmapSourceFromHIcon trả về phiên bản của lớp nội bộ có tên là InteropBitmap, không thể chuyển đổi thành BitmapImage, dẫn đến lỗi.

Bạn cần thay đổi bạn sở hữu để ImageSource (hoặc BitmapSource, mà CreateBitmapSourceFromHIcon lợi nhuận, và được thừa hưởng ImageSource), như thế này:

public ImageSource Image 
{ 
    get { return img.Source; } 
    set { img.Source = value; } 
} 
Các vấn đề liên quan