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