c# – 如何从xaml引用.resx文件内的图标?
发布时间:2020-12-15 06:31:37 所属栏目:百科 来源:网络整理
导读:我正在使用C# WPF应用程序,使用.resx文件进行资源管理.现在,我试图添加图标(.ico)到项目,但我遇到一些问题. Image Name="imgMin" Grid.Column="0" Stretch="UniformToFill" Cursor="Hand" MouseDown="imgMin_MouseDown" Image.Style Style TargetType="{x:Ty
我正在使用C#
WPF应用程序,使用.resx文件进行资源管理.现在,我试图添加图标(.ico)到项目,但我遇到一些问题.
<Image Name="imgMin" Grid.Column="0" Stretch="UniformToFill" Cursor="Hand" MouseDown="imgMin_MouseDown"> <Image.Style> <Style TargetType="{x:Type Image}"> <Setter Property="Source" Value="Imagesminimize_glow.ico"/> <Style.Triggers> <Trigger Property="IsMouSEOver" Value="True"> <Setter Property="Source" Value="Imagesminimize_glow.ico"/> </Trigger> </Style.Triggers> </Style> </Image.Style> </Image> 这很好,但是当我将图标移动到AppResources.resx中时,我遇到了在xaml代码中引用它的问题.我应该使用什么而不是上面的Setter Property = …行?这个: <Setter Property="Source" Value="{x:Static res:AppResources.minimize}"/> 不行,我想我可能需要使用不同于“Source”的属性,因为Value不是指向图标的字符串,而是现在的图标本身.我不知道使用哪一个 – 有些帮助吗? 解决方法
Source属性不“想要”一个字符串,它只是在它获得一个字符串时转换它.如果您向资源添加图标,那么它将是System.Drawing.Icon类型.您将需要通过转换器将其转换为ImageSource.
您可以静态访问资源,但需要符合 例如 xmlns:prop="clr-namespace:Test.Properties" <Image MaxHeight="100" MaxWidth="100"> <Image.Source> <Binding Source="{x:Static prop:Resources.icon}"> <Binding.Converter> <vc:IconToImageSourceConverter/> </Binding.Converter> </Binding> </Image.Source> </Image> 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(); //https://stackoverflow.com/questions/94456/load-a-wpf-bitmapimage-from-a-system-drawing-bitmap/1069509#1069509 MemoryStream ms = new MemoryStream(); bitmap.Save(ms,System.Drawing.Imaging.ImageFormat.Png); ms.Position = 0; BitmapImage bi = new BitmapImage(); bi.BeginInit(); bi.StreamSource = ms; bi.EndInit(); return bi; } public object ConvertBack(object value,System.Globalization.CultureInfo culture) { throw new NotSupportedException(); } } 笔记: >资源访问修饰符必须是public>如果图像被添加为“图像”,则最终会出现位图而不是图标,这需要不同的转换器 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |