如何在xaml中引用.resx文件中的图标?

我正在使用.resx文件进行资源管理的C#WPF应用程序。 现在,我正在尝试向项目中添加图标(.ico),但我遇到了一些问题。

            

这很好,但是当我将图标移动到AppResources.resx时,我遇到了在xaml代码中引用它的问题。 我应该使用什么而不是上面的Setter Property = …行? 这个:

  

不起作用,我想我可能需要使用与“Source”不同的属性,因为Value不是指向图标的字符串,而是现在的图标本身。 我无法弄清楚使用哪一个 – 请帮忙吗?

Source属性不“想要”一个字符串,它只是在获得一个字符串时将其转换。 如果向资源添加图标,则它将是System.Drawing.Icon类型。 您需要通过转换器将其转换为ImageSource

您可以对资源进行静态访问,但它需要符合x:Static的预期语法。

例如

 xmlns:prop="clr-namespace:Test.Properties" 
          
 public class IconToImageSourceConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { var icon = value as System.Drawing.Icon; var bitmap = icon.ToBitmap(); //http://sofzh.miximages.com/c%23/1069509); ms.Position = 0; BitmapImage bi = new BitmapImage(); bi.BeginInit(); bi.StreamSource = ms; bi.EndInit(); return bi; } public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { throw new NotSupportedException(); } } 

笔记:

  • 资源访问修饰符必须是公共的
  • 如果将图像添加为“图像”,则最终会使用Bitmap而不是图标,这需要不同的转换器