首页 > 解决方案 > 如何将资源转换为 xaml 文件中的其他类型?

问题描述

我的英语水平很差,因为我不是以英语为母语的人。我希望你能理解。

我想将字符串资源转换为 ImageSource。

例如,字符串类型资源在 Linkes.xaml 中定义,如下所示。

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                    xmlns:local="clr-namespace:Wpf.UI.Basic.DarkTheme"
                    xmlns:system="clr-namespace:System;assembly=mscorlib">

    <system:String x:Key="CloseImagePath">/Wpf.UI.Basic;component/Resources/Close.png</system:String>

</ResourceDictionary>

我在 Window.xaml(自定义控件)中使用了上述资源,如下所示。

<Image x:Name="CloseImage"
       Source="{DynamicResource CloseImagePath}"
       Stretch="None"
       Margin="4"/>

但是当我像上面那样尝试时,我遇到了字符串类型无法转换为 ImageSource 类型的错误。

所以我尝试添加一个从字符串转换为 ImageSource 的转换器,但由于无法将转换器添加到资源中,所以我不能这样做。

所以我想将转换器添加到 DynamicResource 以从字符串类型转换为 ImageSource 类型。

我应该怎么做才能实现上述目标?我想听听你的建议。

感谢您的阅读。

标签: wpfresourcesconverters

解决方案


声明一个 BitmapImage 资源而不是一个字符串:

<BitmapImage x:Key="CloseImage" UriSource="/Wpf.UI.Basic;component/Resources/Close.png"/>

...

<Image Source="{DynamicResource CloseImage}" .../>

推荐阅读