如何在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
而不是图标,这需要不同的转换器
- 相同的源,具有不同资源的多个目标(Visual Studio .Net 2008)
- 如何在C#中为运行时加载程序集及其所有依赖项以进行reflection?
- 如何将阿拉伯语Umm Al-Qura日期字符串解析为.NET DateTime对象?
- 差异CLR和CLI以及如何从纯C调用它们
- 是否可以以编程方式发送电子邮件而无需使用任何实际的电子邮件帐户
- 如何从数据库动态重新安排C#中的Quartz作业调度程序?
- 在运行时更新app.config system.net设置
- 使用ConditionalAttribute还会删除参数计算吗?
- 我如何使用方法async Task 并返回字符串,然后如何将该方法的委托传递给构造函数并在以后使用它?