WPF使用绑定来分配静态资源

 SHARK 发布于 2023-02-13 20:26

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


    
    
    
    

这有效:


但事实并非如此,调用转换器并传回正确的值.什么是正确的语法?


为完整起见,这是转换功能:

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;
    }
}

Bram Van Str.. 24

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


在您的转换器中执行以下操作:

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

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


    
        
            
        
    

在你的词典(Dictionary1.xaml)


由于您的资源现在已在applicationlevel上定义,因此代码现在将找到您的资源并将其还原.

2 个回答
  • 我会在转换器中返回资源:

    <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" />
    

    由于您的资源现在已在applicationlevel上定义,因此代码现在将找到您的资源并将其还原.

    2023-02-13 20:28 回答
  • 你不能绑定StaticResource密钥,因为它不是DependancyProperty.您必须Source使用converter和更新转换器代码直接绑定到枚举以返回Bitmap自身.

    第二个选项将用于根据值Triggers设置Source属性enum.

    <Image >
       <Image.Style>
          <Style TargetType="{x:Type Image}">
             <Style.Triggers>
                <DataTrigger Binding="{Binding CurrentAlarmItem.AlarmCategory}" 
                             Value="Category1">
                   <Setter Property="Source" Value="{StaticResource AlarmCat1}" />
                </DataTrigger>
             </Style.Triggers>
          </Style>
       </Image.Style>
    </Image>
    

    2023-02-13 20:30 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有