【发布时间】:2015-10-19 00:09:04
【问题描述】:
我有一个ListView,它是数据绑定的,可以根据传入的某些属性对项目的行进行颜色编码。这一切都按预期工作。
我想覆盖特定单元格以根据不同的属性更改其颜色。
ListView....
<Grid>
<ListView x:Name="dbItems" ItemsSource="{Binding itemList}" ScrollViewer.HorizontalScrollBarVisibility="Auto" ScrollViewer.VerticalScrollBarVisibility="Auto">
<ListView.Resources>
<Style TargetType="{x:Type ListViewItem}">
<Setter Property="Background" Value="{Binding connectionStatus, UpdateSourceTrigger=PropertyChanged, Converter={StaticResource converter}}" />
</Style>
<!--<Style TargetType="{x:Type ListViewItem.}">
<Setter Property="Background" Value="{Binding badSubItem, UpdateSourceTrigger=PropertyChanged, Converter={StaticResource cellConverter}}" />
</Style>-->
</ListView.Resources>
<ListView.View>
<GridView>
<GridViewColumn Header="Name" DisplayMemberBinding="{Binding Name}" />
<GridViewColumn Header="DESCRIPTION" DisplayMemberBinding="{Binding description}" />
<GridViewColumn Header="RESOURCE" DisplayMemberBinding="{Binding resource}" />
<GridViewColumn Header="SubItem" DisplayMemberBinding="{Binding subItemFound}" />
<GridViewColumn Header="Count" DisplayMemberBinding="{Binding count}"/>
</GridView>
</ListView.View>
</ListView>
</Grid>
每行的初始颜色编码由Converter 处理。
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
switch ((Interfaces.Enum.Status)value)
{
case Interfaces.Enum.Status.Unknown:
return Brushes.LightGray;
case Interfaces.Enum.Status.Offline:
return Brushes.Red;
case Interfaces.Enum.Status.Online:
return Brushes.Green;
case Interfaces.Enum.Status.OnlineButNotInitialized:
return Brushes.OrangeRed;
default:
return Brushes.LightGray;
}
}
我希望使用另一个Converter 的单元格的颜色变化...
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (!(bool)value)
return Brushes.LightGreen;
return Brushes.Yellow;
}
问题出在注释掉的样式标记(第二个ListViewItem 样式)中,因为它只需要应用于特定的单元格(子项 - 布尔值),但是我似乎找不到正确的绑定类型。任何人都可以在这方面帮助我,或者为我指明正确的方向来完成这项工作......
【问题讨论】:
标签: c# wpf data-binding converter