c# - 从给定路径加载图标以显示在 WPF 窗口中

标签 c# wpf icons

我有一个显示目录的树和另一个显示文件的面板。现在显示的文件没有图标。我只知道文件的路径。我想做的是让该文件图标显示在该面板中。我需要输出和 Image.source。目前这就是我所拥有的

    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;

从那里我调用我的 itme 并尝试更改其默认图标:

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

ic 是列表的给定项,f.fullname 包含路径 这是图像的获取和设置

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

它不起作用,这是我尝试过的许多方法之一,它说它不能转换不同的类型。有没有人有办法做到这一点?
我完全迷路了。

最佳答案

我假设 img 是一个标准的 Image 控件。

您的 Image 属性属于 BitmapImage 类型,它是一种特定的 ImageSourceCreateBitmapSourceFromHIcon 返回一个名为 InteropBitmap 的内部类的实例,无法将其转换为 BitmapImage,从而导致错误。

您需要将属性更改为 ImageSource(或 BitmapSourceCreateBitmapSourceFromHIcon 返回并继承 ImageSource ), 就像这样:

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

关于c# - 从给定路径加载图标以显示在 WPF 窗口中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2059469/

相关文章:

Android 应用程序开发 : Two icons getting created and I only need one

c# - Id 属性的 Entity Framework 虚拟属性和数据库访问?

c# - FluentNHibernate RTM 和 NHibernate.Linq

c# - C# 中值相等的自定义类的最健壮的 Equals 实现

c# - x :Bind to DependencyProperty not working (classic Binding works fine)

wpf - Visual Studio 2015 XAML 设计器因 WPF 崩溃

为 App Store 分发构建时, bundle 中的 iPhone 图标文件为空

ios - 如何在 xcode 代码中显示图像标题而不是图标?

c# - Async.RunSynchronously() 与 Async.StartAsTask().Result

c# - WPF/MVVM 换行面板方向