ListView 实现子项(ListViewItem)颜色间隔显示的样式。
1、定义一个转换器来控制行显示的颜色
public sealed class BackgroundConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
ListViewItem item = (ListViewItem)value;
ListView listView = ItemsControl.ItemsControlFromItemContainer(item) as ListView;
int index = listView.ItemContainerGenerator.IndexFromContainer(item);
if (index % 2 == 0)
return new SolidColorBrush((Color)ColorConverter.ConvertFromString("#FF33C3FB"));
else
{
return new SolidColorBrush((Color)ColorConverter.ConvertFromString("#FF009DD0"));
}
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
**************************************************************************************************************
2、转换器添加到资源字典中
<converter:BackgroundConverter x:Key="BackgroundConverter"/>
**************************************************************************************************************
3、样式改写示例如下
<!--ListView-->
<Style x:Key="ListViewItemStyle" TargetType="{x:Type ListViewItem}">
<Setter Property="Margin" Value="2,1,2,0"/>
<Setter Property="Background">
<Setter.Value>
<Binding RelativeSource="{RelativeSource Self}" Converter="{StaticResource BackgroundConverter}" />
</Setter.Value>
</Setter>
</Style>
**************************************************************************************************************
4、样式引用示例
<ListView x:Name="ShowTipList" Height="110" Background="{StaticResource ThemeColor1}" ScrollViewer.VerticalScrollBarVisibility="Auto"
ItemContainerStyle="{StaticResource ListViewItemStyle}"
ItemsSource="{Binding DataList, Mode=TwoWay}" SelectedItem="{Binding SelectedItem,Mode=TwoWay}">
**************************************************************************************************************
5、效果图
**************************************************************************************************************
6、扩展
可以通过,继承ListView,定义一个继承ListView的类,使用GridView,添加样式隐藏GridView的列头,来达到上述的效果。
也可以通过使用StyleSelector的方法
**************************************************************************************************************