我正在使用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
更改背景颜色。例如,如果RiskName
为“高”,则背景为红色,如果RiskName
为“中”,则背景为“黄色”,依此类推。
我添加了样式以及触发器,根据值
设置背景<Trigger Property="Text" Value="High">
<Setter Property="Background" Value="Red"/>
</Trigger>
<Trigger Property="Text" Value="Medium">
<Setter Property="Background" Value="Yellow"/>
</Trigger>
它工作正常,但在我的情况下,RiskName
的文本不是常量。价值是动态的。在WPF中有什么方法可以动态设置触发器属性的值,看起来像这样吗?
<Trigger Property="Text" Value="{Binding RiskName}">
<Setter Property="Background" Value="{Binding RiskBrush}"/>
</Trigger>
有什么建议吗?如果没有那么其他的工作是什么?
答案 0 :(得分:1)
使用Converter
代替Trigger
。将Background
绑定到RiskName
并编写一个返回Brush
的转换器,该值由RiskName
确定。
链接到MSDN以获取您需要使用的界面IValueConverter
- http://msdn.microsoft.com/en-us/library/system.windows.data.ivalueconverter%28v=vs.110%29.aspx
转换器良好教程的链接:http://wpftutorial.net/ValueConverters.html
答案 1 :(得分:1)
这样的东西?
<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];
}
}