[英]WPF Listview: How to change background of an ListViewItem in CodeBehind?
我有一个带有简单数据绑定的 WPF ListView:
<ListView Name="MeasurementListView">
<ListView.View>
<GridView>
<GridViewColumn x:Name="MeasurementListView_Name" Width="100" DisplayMemberBinding="{Binding Name}" />
<GridViewColumn x:Name="MeasurementListView_Color" Width="100" DisplayMemberBinding="{Binding Color}" />
</GridView>
</ListView.View>
</ListView>
我绑定它,只要它从数据库中加载并且用户单击按钮加载:
private void FillMeasurementListView()
{
MeasurementListView.ItemsSource = this.myData;
}
现在 Color 列是一个 RGB 信息(例如 200、200、200),我可以轻松地将其转换为 System.Drawing.Color。 所以目前显示文本(200、200、200),但我想隐藏文本并用给定的 RGB 颜色为这个 ListViewItem 的背景着色。
所以没有数据绑定(我是 WPF 和 MVVM 的新手)我会寻找加载数据的入口点(例如加载事件),找到我的单元格/列并清空显示的文本并设置背景颜色,可悲的是我在这个 ListViewControle 中找不到这样的事件。
任何想法如何解决这个问题?
您需要为 Item 设置样式:
<ListView Name="MeasurementListView">
<ListView.View>
<GridView>
<GridViewColumn x:Name="MeasurementListView_Name" Width="100" DisplayMemberBinding="{Binding Name}" />
<GridViewColumn x:Name="MeasurementListView_Color" Width="100" DisplayMemberBinding="{Binding Color}" />
</GridView>
</ListView.View>
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="Background" Value="{Binding Color, Converter=ColorToBrushConverter}"/>
</Style>
</ListView.ItemContainerStyle>
</ListView>
ColorToBrushConverter - IValueConverter 将您的类型的 Color 属性转换为 Brush 类型 (SolidColorBrush)。
或者没有转换器,如果Color属性是System.Windows.Media.Color类型:
<Style TargetType="ListViewItem">
<Setter Property="Background">
<Setter.Value>
<SolidColorBrush Color="{Binding Color}"/>
</Setter.Value>
</Setter>
</Style>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.