绑定到使用XAML添加到resx文件的图像的图像

Rad*_* M. 5 wpf resources image

我的WPF应用程序包含一个资源文件MyResources.resx,其中包含多个字符串和图像.因为应用程序需要本地化,所以我对全局化资源的所有引用必须通过自动生成的MyResources类的命名属性来完成.以下代码适用于字符串资源:

<Button Content="{x:Static local:Properties.MyResources.ButtonText}" />
Run Code Online (Sandbox Code Playgroud)

然而,这对图像不起作用.假设我有一个图像eflag.bmp作为名为Flag的资源添加到资源中,我希望能够做到这样的事情:

<Image Source="{x:Static local:Properties.MyResources.Flag}" />
Run Code Online (Sandbox Code Playgroud)

请注意以下替代方法:

<Image Source="/MyNamespace;component/Resources/eflag.bmp" />
Run Code Online (Sandbox Code Playgroud)

在这种情况下无法使用,因为它无法处理本地化.使用代码可以解决问题,但我正在寻找基于XAML的解决方案.

H.B*_*.B. 8

把你x:Static变成一个Binding.Source和增加Converter其做位图的ImageSource.

Source="{Binding Source={x:Static local:Properties.MyResources.Flag},
                 Converter={StaticResource BitmapToImageSourceConverter}}"
Run Code Online (Sandbox Code Playgroud)

或者,您可以将转换器设置为自定义标记扩展,该扩展需要a Bitmap并返回ImageSourcein ProvideValue.

Source="{me:BitmapToImageSource {x:Static local:Properties.MyResources.Flag}}"
Run Code Online (Sandbox Code Playgroud)