【问题标题】: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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-09-29
      • 1970-01-01
      • 2017-03-04
      • 1970-01-01
      • 2023-03-16
      • 2011-04-04
      • 1970-01-01
      相关资源
      最近更新 更多