如何在WPF应用程序中获取ListViewItem的值和文本颜色?

时间:2018-08-31 12:47:09

标签: wpf listviewitem

我想在ListViewItem控件中获得一行的值,然后根据该值确定颜色是红色还是绿色。

我尝试了以下操作:

foreach (var item in listView1.Items)
{
    var listViewItem = listView1.ItemContainerGenerator.ContainerFromItem(item) as ListViewItem;
    if (item.IsOnline == "online")
    {
        listViewItem.Foreground = Brushes.Green;
    }
    else
    {             
        listViewItem.Foreground = Brushes.Red;
    }
}

但是,这样一来,我无法从item.IsOnline获取值。如果我像这样foreach使用foreach (var item in listView1.Items),那么我可以获得值,但不能更改前景色。

1 个答案:

答案 0 :(得分:2)

您应该在XAML标记中定义一个ItemContainerStyle

<ListView x:Name="listView1">
    <ListView.ItemContainerStyle>
        <Style TargetType="ListViewItem">
            <Setter Property="Foreground" Value="Red" />
            <Style.Triggers>
                <DataTrigger Binding="{Binding IsOnline}" Value="online">
                    <Setter Property="Foreground" Value="Green" />
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </ListView.ItemContainerStyle>
</ListView>