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

问题描述 投票:0回答:1

我想在我的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)然后我可以得到值但不能改变前景色。

wpf listviewitem
1个回答
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>
© www.soinside.com 2019 - 2024. All rights reserved.