根据数据绑定ItemsSource项中的值有条件地更改WPF ComboBox项的前景

时间:2011-05-04 21:38:28

标签: wpf combobox datatrigger

我有一个绑定到集合List<Users>的WPF ComboBox。我已应用DataTemplate使用TextBlock显示FirstName,这可以按预期工作:

        <ComboBox Margin="5" ItemsSource="{Binding Path=TheUsers}" Name="cboUsers">
            <ComboBox.ItemTemplate>
                <DataTemplate>
                    <TextBlock Margin="10" Text="{Binding Path=FirstName}">
                    </TextBlock>
                </DataTemplate>
            </ComboBox.ItemTemplate>
        </ComboBox>`

我的User类中有一个名为IsActive的项,它是一个布尔值。如果为true,那么我想将TextBlock的前景设置为Navy。

我花了很多时间在网上看起来很简单,但是大多数文章都谈到改变整体颜色或绑定到xaml中的另一个元素。

我尝试实现DataTrigger,一小时后删除了代码,因为它无法正常工作。它不会识别我的字段名称。有没有人有一个非常简单的指导如何做到这一点或什么是最好的方法?

1 个答案:

答案 0 :(得分:4)

因为你显然不是在处理字段,所以这种风格应该做你想要的:

<TextBlock.Style>
    <Style TargetType="{x:Type TextBlock}">
        <Style.Triggers>
            <DataTrigger Binding="{Binding IsActive}" Value="True">
                <Setter Property="Foreground" Value="Navy"/>
            </DataTrigger>
        </Style.Triggers>
    </Style>
</TextBlock.Style>

  

它无法识别我的字段名称。

你不能绑定到字段,故事结束。