首先写一个继承IValueConverter的背景颜色转换类
public sealed class BackgroundConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter,
CultureInfo culture)
{
ListViewItem item = (ListViewItem)value;
ListView listView =
ItemsControl.ItemsControlFromItemContainer(item) as ListView;
// Get the index of a ListViewItem
int index = listView.ItemContainerGenerator.IndexFromContainer(item);
if (index % 2 == 0)
{
Color color=new Color();
color.R=220;
color.G=220;
color.B=220;
SolidColorBrush scb = new SolidColorBrush();
scb.Color = color;
scb.Opacity = 1;
return scb;
}
else
{
return Brushes.White;
}
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
return null;
}
}
在xaml上 引用该类的命名空间
xmlns:namespc="clr-namespace:EShowX86_2D.External"
定义listviewItem资源
<Window.Resources>
<namespc:BackgroundConverter x:Key="myConverter"/>
<Style x:Key="myItemStyle" TargetType="{x:Type ListViewItem}">
<Setter Property="Background">
<Setter.Value> <Binding RelativeSource="{RelativeSource Self}" Converter="{StaticResource myConverter}"/>
</Setter.Value>
</Setter>
<Style.Triggers>
<Trigger Property="IsSelected" Value="true">
<Setter Property="Background" Value="PowderBlue" />
</Trigger>
</Style.Triggers>
</Style>
</Window.Resources>
//创建listView
<ListView Margin="4,12,14,0" x:Name="gridListView" Height="380" Background="#CBCBCB" ItemContainerStyle="{StaticResource myItemStyle}">
<ListView.View>
<GridView x:Name="gridViewAu" AllowsColumnReorder="true" >
<GridViewColumn>
<GridViewColumnHeader HorizontalContentAlignment="Left">图片</GridViewColumnHeader>
<GridViewColumn.CellTemplate>
<DataTemplate>
<Border Background= "{Binding Background}">
<Image Stretch="Fill" Source= "{Binding PicPath}" Height="30" Width="30"/>
</Border>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView >