【问题标题】:How to use data trigger in case of value not equal to在值不等于的情况下如何使用数据触发器
【发布时间】:2019-01-15 17:28:12
【问题描述】:
我在数据网格中有一个列'Delivery Boy',它与后面代码中的列表绑定。 DataGrid 的值动态变化。
<DataTrigger Binding="{Binding Path=delivery_boy}" Value="Not Assigned">
<Setter Property="Foreground" Value="DarkRed"/>
<Setter Property="Background" Value="Transparent"/>
</DataTrigger>
我可以在数据触发器中使用“值”等于,在我希望“值”属性为“不等于”的情况下如何使用数据触发器
<DataTrigger Binding="{Binding Path=delivery_boy}" Value!="Not Assigned">
<Setter Property="Foreground" Value="White"/>
<Setter Property="Background" Value="Green"/>
</DataTrigger>
【问题讨论】:
标签:
.net
wpf
data-binding
datatrigger
【解决方案1】:
XAML 中没有可用的 != 运算符,因此您必须使用 converter 或者您可以添加并绑定到您实现逻辑的另一个源属性,例如:
<DataTrigger Binding="{Binding IsAssigned}" Value="True">
...
public bool IsAssigned => delivery_boy != "Not Assigned";
【解决方案2】:
不知道为什么这被否决,这是一个完全有效的问题。
通常,您可以通过在样式中分配默认 Setter,然后仅使用 DataTriggers 来覆盖这些以响应特定值,即:
<Style>
<Setter Property="Foreground" Value="White"/> <!-- Default value -->
<Setter Property="Background" Value="Green"/> <!-- Default value -->
<Style.Triggers>
<DataTrigger Binding="{Binding Path=delivery_boy}" Value="Not Assigned">
<Setter Property="Foreground" Value="DarkRed"/>
<Setter Property="Background" Value="Transparent"/>
</DataTrigger>
</Style.Triggers>
</Style>