Gha*_*mar 14 .net data-binding wpf datatrigger
我在数据网格中有一个“Delivery Boy”列,它与后面的代码列表绑定。DataGrid 的值动态变化。
<DataTrigger Binding="{Binding Path=delivery_boy}" Value="Not Assigned">
<Setter Property="Foreground" Value="DarkRed"/>
<Setter Property="Background" Value="Transparent"/>
</DataTrigger>
Run Code Online (Sandbox Code Playgroud)
我可以在数据触发器中使用“值”等于,如何在我希望“值”属性为“不等于”的情况下使用数据触发器
<DataTrigger Binding="{Binding Path=delivery_boy}" Value!="Not Assigned">
<Setter Property="Foreground" Value="White"/>
<Setter Property="Background" Value="Green"/>
</DataTrigger>
Run Code Online (Sandbox Code Playgroud)
不知道为什么这会被否决,这是一个完全有效的问题。
通常,您通过在样式中分配默认设置器然后仅使用 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>
Run Code Online (Sandbox Code Playgroud)
XAML 中没有!=可用的运算符,因此您必须使用转换器,或者您可以添加并绑定到实现逻辑的另一个源属性,例如:
<DataTrigger Binding="{Binding IsAssigned}" Value="True">
...
Run Code Online (Sandbox Code Playgroud)
public bool IsAssigned => delivery_boy != "Not Assigned";
Run Code Online (Sandbox Code Playgroud)