C# 带有静态资源的XAML图像源
我的项目中有很多图像,这就是我在解决方案中创建图像资源的原因我引用了所有这些图像,如下所示: 然后我在我的XAML中引用如下:C# 带有静态资源的XAML图像源,c#,wpf,xaml,C#,Wpf,Xaml,我的项目中有很多图像,这就是我在解决方案中创建图像资源的原因我引用了所有这些图像,如下所示: 然后我在我的XAML中引用如下: <Image x:Name="ImgFail" Grid.Row="1" Grid.ColumnSpan="2" Source="{x:Static img:Imagenes.IMG_FailStamp}"/> 这样,它在运行时抛出一个错误不是“sour
<Image
x:Name="ImgFail"
Grid.Row="1"
Grid.ColumnSpan="2"
Source="{x:Static img:Imagenes.IMG_FailStamp}"/>
这样,它在运行时抛出一个错误不是“source”属性的有效值
但如果直接引用图像,如下所示:
<Image
x:Name="ImgOk"
Grid.Row="1"
Grid.ColumnSpan="2"
Source="/||||||||.Recursos.Imagenes;component/Resources/Ok-PNG-Pic.png"/>
它起作用了
如何使用静态资源正确设置图像源 那是因为当你
Source="{x:Static img:Imagenes.IMG_FailStamp}"
这是这样编译的:
img.Source = Imagenes.IMG_FailStamp
Source="{Binding Source={x:Static img:Imagenes.IMG_FailStamp}, Mode=OneTime}"
但是Image.Source
的类型是ImageSource
,而您的IMG\u FailStamp
的类型是string
-这不会编译。但当你这样做的时候:
Source="/||||||||.Recursos.Imagenes;component/Resources/Ok-PNG-Pic.png"
它是不同的-现在您的字符串将通过ImageSourceConverter
,并将其转换为有效的ImageSource
(因此将读取您的文件并从中创建源代码)
因此,当您使用x:Static
-您只需直接告诉要使用的值,而不涉及转换器。因此,如果要使用x:Static
,则目标属性的类型应为ImageSource
如果仍要在资源中存储图像路径,请执行以下操作:
Imagenes.IMG\u FailStamp
成为公共属性img.Source = Imagenes.IMG_FailStamp
Source="{Binding Source={x:Static img:Imagenes.IMG_FailStamp}, Mode=OneTime}"
Binding将运行必要的转换器,图像将显示良好。Tks以获取帮助。这意味着必须编写一个从字符串到ImageSource的转换器?@JuanPabloGomez我已经用一种方法更新了答案,使它在您的场景中工作。