如何在数值不等于时使用数据触发器

18
我有一个数据网格中的“送货员”列,它与后端代码中的列表绑定。数据网格的值会动态更改。
<DataTrigger Binding="{Binding Path=delivery_boy}" Value="Not Assigned">
   <Setter Property="Foreground" Value="DarkRed"/>
   <Setter Property="Background" Value="Transparent"/>
</DataTrigger>

我可以使用“Value”等于数据触发器,在某些情况下我想要“Value”属性为“不等于”,如何使用数据触发器?
<DataTrigger Binding="{Binding Path=delivery_boy}" Value!="Not Assigned">
    <Setter Property="Foreground" Value="White"/>
    <Setter Property="Background" Value="Green"/>
</DataTrigger>

1
使用绑定转换器返回适当的布尔值。 - Clemens
2个回答

19

不知道为什么这个被投票否决,它是一个完全有效的问题。

通常,您可以通过在样式中分配默认Setter,然后仅使用DataTriggers在响应特定值时覆盖这些Setters来完成此操作,例如:

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

3

XAML中没有!=运算符可用,因此您需要使用转换器或者添加并绑定到另一个源属性,其中您实现了逻辑,例如:

<DataTrigger Binding="{Binding IsAssigned}" Value="True">
...

public bool IsAssigned => delivery_boy != "Not Assigned";

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接