我想在我的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>