ListView更改单个项目的背景

时间:2014-08-29 12:43:04

标签: c# xml wpf xaml listview

我们假设我有以下列表视图:

<ListView Name="list" />

以及我的函数中的以下代码:

list.Items.Add("red");
list.Items.Add("green");

如何将第一个项目的背景更改为红色,将第二个项目的背景更改为绿色?

1 个答案:

答案 0 :(得分:1)

您可以使用ItemContainerStyle为项目定义样式。

在样式中,您可以将Background属性绑定到项目本身,该项目是颜色的表示。

现在,隐式颜色转换器将转换为适当的颜色并设置为背景属性。

例如

<ListView Name="list" >
    <ListView.ItemContainerStyle>
        <Style TargetType="ListViewItem">
            <Setter Property="Background"
                    Value="{Binding}" />
        </Style>
    </ListView.ItemContainerStyle>
</ListView>

结果

result

替代approch

以下是如何使用Triggers有条件地设置值

我使用DataTrigger查看该项目是否符合我的条件,然后我可以通过设置器设置所需的颜色

<ListView Name="list">
    <ListView.ItemContainerStyle>
        <Style TargetType="ListViewItem">
            <Style.Triggers>
                <DataTrigger Binding="{Binding}"
                             Value="red">
                    <Setter Property="Background"
                            Value="red" />
                </DataTrigger>
                <DataTrigger Binding="{Binding}"
                             Value="mygreen">
                    <Setter Property="Background"
                            Value="green" />
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </ListView.ItemContainerStyle>
</ListView>

结果

result

在上面的示例中,您可以看到背景颜色仅适用于所需的项目,例如。红色&amp; mygreen