<Window x:Class="WpfApplication1.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:WpfApplication1="clr-namespace:WpfApplication1"
Title="Window1" Height="300" Width="300">
<Grid>
<Grid.Resources>
<WpfApplication1:ListViewStyleSelector x:Key="ListViewStyleSelector"/>
</Grid.Resources>
<ListView ItemsSource="{Binding}" ItemContainerStyleSelector="{StaticResource ListViewStyleSelector}">
<ListView.Resources>
<Style TargetType="ListViewItem" x:Key="odd">
<Setter Property="Background" Value="LightGray"/>
</Style>
</ListView.Resources>
<ListView.View>
<GridView>
<GridViewColumn Header="No" DisplayMemberBinding="{Binding No}"/>
<GridViewColumn Header="Text" DisplayMemberBinding="{Binding Text}"/>
</GridView>
</ListView.View>
</ListView>
</Grid>
</Window>
using System;
using System.Windows;
using System.Windows.Controls;
namespace WpfApplication1
{
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
DataContext = new []
{
new Data{No = 1, Text = "ABC"},
new Data{No = 2, Text = "DEF"},
new Data{No = 3, Text = "GHI"},
new Data{No = 4, Text = "JKL"},
new Data{No = 5, Text = "MNO"},
};
}
}
public class Data
{
public int No { get; set; }
public string Text { get; set; }
}
public class ListViewStyleSelector : StyleSelector
{
public override Style SelectStyle(object item, DependencyObject container)
{
var d = (Data)item;
if(d.No % 2 != 0)
{
var f = (FrameworkElement)container;
return (Style)f.FindResource("odd");
}
else
{
return null;
}
}
}
}
条件に応じて Style を選択する StyleSelector を用意するだけ。
なので、奇数行という条件だけでなく、様々な条件を元に様々な表現ができる。