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

How to get the value and text color of a ListViewItem in a WPF application?

我想获取 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) 那么我可以获得值但不能更改前景色。

您应该在 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>