如何在 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>
我想获取 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>