wpf listView实现Grid,并且奇偶行显示不同颜色
2012-11-23 15:21
741 查看
首先写一个继承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 >
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 >
相关文章推荐
- echarts柱状图每个柱子显示不同颜色,并且能够实现点击每种颜色影藏对应柱子的功能
- 如何实现textarea里的不同文本显示不同颜色
- UITextView显示HTML内容,实现显示不同的字体和文字颜色
- destoon实现不同会员组公司名称显示不同的颜色的方法
- ListView中显示不同的视图布局实现重用
- WPF ListView显示GridLine(可选), 通过附加属性修改
- Delphi实现Listbox中的item根据内容显示不同颜色的方法
- Android编程实现控件不同状态文字显示不同颜色的方法
- 用JS实现表格中隔行显示不同颜色
- android ListView实现颜色交替并且有点击效果
- WPF ListView显示GridLine(可选)
- 网页表格隔行显示不同颜色,怎样实现?
- js实现单双行以不同颜色显示
- JQuery实现奇偶行不同背景颜色
- Android中使用一个textview实现不同颜色以及内容分割的显示
- Android ListView给每个Item显示不同颜色的字体
- XML+XSLT实现表格颜色交替,某列背景根据数据显示不同颜色
- 想实现日期为当天的时候,显示的日期颜色跟其他的不同
- WPF MVVM模式下实现ListView下拉显示更多内容
- Cocos2d-JS中CollectionView实现不同大小Cell同时显示的技巧(ListView中添加显示标签)