gpt4 book ai didi

c# - WPF 使用绑定(bind)分配静态资源

转载 作者:IT王子 更新时间:2023-10-29 04:48:49 27 4
gpt4 key购买 nike

我正在尝试使用枚举来显示相应的图像。为此,我有一个值转换器,可将枚举转换为正确的资源名称。我的资源定义如下:

<UserControl.Resources>
<BitmapImage x:Key="AlarmCat1" UriSource="/Lib.Infrastructure;component/Resources/msg_cat1.bmp" />
<BitmapImage x:Key="AlarmCat2" UriSource="/Lib.Infrastructure;component/Resources/msg_cat2.bmp" />
<BitmapImage x:Key="AlarmCat3" UriSource="/Lib.Infrastructure;component/Resources/msg_cat3.bmp" />
<converters:JamCategoryToImageConverter x:Key="AlarmCategoryConverter" />
</UserControl.Resources>

这个有效:

<Image Source="{StaticResource AlarmCat1}" />

但这并没有,转换器被调用并且正确的值被传回。正确的语法是什么?

<Image Source="{StaticResource { Binding CurrentAlarmItem.AlarmCategory, Converter={StaticResource AlarmCategoryConverter}}}" />

为了完整起见,这是转换函数:

public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
switch ((AlarmCategory)value)
{
case AlarmCategory.Category1:
return "AlarmCat1";
case AlarmCategory.Category2:
return "AlarmCat2";
case AlarmCategory.Category3:
return "AlarmCat3";
default:
return null;
}
}

最佳答案

我会在转换器中返回资源:

<Image Source="{Binding CurrentAlarmItem.AlarmCategory, Converter={StaticResource AlarmCategoryConverter}}" />

在你的转换器中做这样的事情:

return Application.Current.FindResource("AlarmCat1") as BitmapImage;

使用 resourcedictionary (app.xaml) 为完整的应用程序设置资源

<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Dictionary1.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>

在你的字典中 (Dictionary1.xaml)

<BitmapImage x:Key="AlarmCat1" UriSource="bh.jpg" />

因为您的资源现在是在应用程序级别定义的,代码现在将找到您的资源并将其返回。

关于c# - WPF 使用绑定(bind)分配静态资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20279337/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com