Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在WPF中动态绑定触发器值_C#_Wpf_Data Binding_Triggers_Styles - Fatal编程技术网

C# 在WPF中动态绑定触发器值

C# 在WPF中动态绑定触发器值,c#,wpf,data-binding,triggers,styles,C#,Wpf,Data Binding,Triggers,Styles,我正在使用ListView和GridView以表格格式显示数据: <ListView> <ListView.View> <GridView> <GridViewColumn Header="Name" Width="120" DisplayMemberBinding="{Binding Name}" /> <GridViewColumn Header="Risk" Width="150" DisplayMember

我正在使用
ListView
GridView
以表格格式显示数据:

<ListView>
 <ListView.View>
   <GridView>
     <GridViewColumn Header="Name" Width="120" DisplayMemberBinding="{Binding Name}" />
     <GridViewColumn Header="Risk" Width="150" DisplayMemberBinding="{Binding RiskName}" />
   </GridView>
</ListView.View>
它工作正常,但在我的例子中,
RiskName
的文本不是常量。这个值是动态的。在WPF中,是否有任何方法可以动态设置触发器属性的值,如下所示

<Trigger Property="Text" Value="{Binding RiskName}">
    <Setter Property="Background" Value="{Binding RiskBrush}"/>
</Trigger>


有什么建议吗?如果没有,那么其他解决方法是什么?

使用
转换器
而不是
触发器
。将
Background
绑定到
RiskName
并编写一个转换器,返回由
RiskName
的值确定的
Brush

链接到MSDN以获取需要使用的接口
IValueConverter
-

一个关于转换器的好教程的链接:

类似的内容

<converters:MyBrushLookupConverter x:Key="brushLookup" BrushDictionary="{Binding KeyedBrushes}" />

MyBrushLookupConverter看起来像什么

public class MyBrushLookupConverter : DependencyObject, IValueConverter
{
   // This is a dependency property - dependency property gumf omitted for brevity
   public Dictionary<string, Brush> BrushDictionary {get; set;}

   // Convert method
   public Convert(object value, ...)
   {
      return BrushDictionary[(string)value];
   }
}
公共类MyBrushLookupConverter:DependencyObject,IValueConverter
{
//这是一个依赖属性-为了简洁起见,省略了依赖属性gumf
公共词典{get;set;}
//转换方法
公共转换(对象值,…)
{
返回BrushDictionary[(字符串)值];
}
}

感谢您的建议,但使用转换器方法,我还需要在c代码中硬编码值,如if RiskName高于return Red brush等,这与上面的硬编码触发器相同。是否有映射到
RiskName
的颜色列表存储在您的模型中?i、 e.
RiskName
到颜色的映射是什么?
public class MyBrushLookupConverter : DependencyObject, IValueConverter
{
   // This is a dependency property - dependency property gumf omitted for brevity
   public Dictionary<string, Brush> BrushDictionary {get; set;}

   // Convert method
   public Convert(object value, ...)
   {
      return BrushDictionary[(string)value];
   }
}