MVVM如何在liestview中具有不同的文本颜色

时间:2018-12-29 03:09:35

标签: wpf mvvm view

如何更改行线颜色。

<ListView ItemsSource="{Binding ListOfChar}">
    <ListView.View>
        <GridView>
            <GridViewColumn Header="AAAA" DisplayMemberBinding="{Binding Path=AAAA}"/>               
            <GridViewColumn Header="XXXX" DisplayMemberBinding="{Binding Path=XXXX}"/>
            <GridViewColumn Header="BBBB" DisplayMemberBinding="{Binding Path=BBBB}"/>
        </GridView>
    </ListView.View>
</ListView>

所以我有一个包含3列AAAA,XXXX,BBBB的listView。如果XXXX列等于1,则我希望将颜色设置为红色;如果等于2,则为蓝色;如果等于3,则设置为绿色,在其他情况下,我希望保持黑色

NB:XXXX是一个字符串

1 个答案:

答案 0 :(得分:0)

为所有ListView创建样式,然后使用DataTrigger设置前景色,即:

<ListView.Resources>
    <Style TargetType="ListViewItem">
        <Setter Property="Foreground" Value="Red" />
        <Style.Triggers>
            <DataTrigger Binding="{Binding XXXX}" Value="{x:Null}">
                <Setter Property="Foreground" Value="Black" />
            </DataTrigger>
            <DataTrigger Binding="{Binding XXXX}" Value="">
                <Setter Property="Foreground" Value="Black" />
            </DataTrigger>
        </Style.Triggers>
    </Style>
</ListView.Resources>

请注意,这是一个非常简单的情况,因此,我会说可以在XAML中做到这一点的一种非常罕见的情况。一旦开始添加任何实际的逻辑,最好绑定到为此专门创建的视图模型中的属性(即public bool IsError.....),然后在其他任何属性发生更改时让视图模型更新它。< / p>