WPF:数据绑定到ListView,以便listview项的ForeColor反映bool属性值的变化

时间:2011-07-07 17:48:00

标签: c# wpf data-binding listview

WPF应用程序,.NET 3.5。

我有一个 ListView 控件,我绑定了一组业务类。

我想将 ForeColor 项绑定到类的bool属性(例如:MyClass。 Active ),以便项目以黑色显示激活时,禁用时为浅灰色。

我希望listview项目能够即时更改颜色,我的意思是当我更改我的数据绑定集合中某个实例的 Active 值时,其各自的listview项目将更改其自动着色。

我需要做什么?我在网上找到了很多关于WPF数据绑定的教程,关于StackOverflow的一些问题,但不是完全相同的事情,而且我不想开始将我的解决方案从我可以放手的所有内容中组合出来,通过反复试验

我知道 INotifyPropertyChanged (对于我的商务舱), IValueConverter (但我应该为bool需要吗?), DataTrigger

但是我真正需要哪些拼图,实现目标的最简单方法是什么?

2 个答案:

答案 0 :(得分:2)

我只是在一个样式中执行它,并将该样式应用于List项目。假设您的对象实现INotifyPropertyChanged并且当IsActive更改时会引发属性更改事件,如果IsActive = False

,则会将前景更改为灰色
<Style x:Key="DisableInactiveTextStyle" TargetType="{x:Type TextBlock}">
    <Setter Property="Foreground" Value="Black" />
    <Style.Triggers>
        <DataTrigger Binding="{Binding IsActive}" Value="False">
            <Setter Property="Foreground" Value="LightGray" />
        </DataTrigger>
    </Style.Trigger>
</Style>

<TextBlock Style="{StaticResource DisableInactiveTextStyle}" ... />

答案 1 :(得分:0)

我建议创建一个带有bool并返回颜色的IValueConverter。然后,您可以将ForeColor绑定到MyClass.Active属性并使用创建的转换器。