縞々
ついでなので、縞々のサンプルも書いておきます。ぐぐればすぐ見つかるけど、それでも書いておきます。
<AlternationConverter x:Key="BackgroundConverter"> <SolidColorBrush>white</SolidColorBrush> <SolidColorBrush Color="#dee7f5" /> </AlternationConverter> <Style x:Key="stripe" TargetType="{x:Type ListViewItem}"> <Setter Property="Background" Value="{Binding RelativeSource={RelativeSource Self}, Path=(ItemsControl.AlternationIndex), Converter={StaticResource BackgroundConverter}}"/> <Setter Property="HorizontalContentAlignment" Value="Stretch"/> <!-- これは右揃えのため --> </Style> ... <ListView ItemsSource="{Binding}" AlternationCount="2" ItemContainerStyle="{StaticResource stripe}"> <ListView.View> <GridView> <GridViewColumn Header="Name" DisplayMemberBinding="{Binding Path=Name}"/> <GridViewColumn Header="Point"> <GridViewColumn.CellTemplate> <DataTemplate> <TextBlock TextAlignment="Right" Text="{Binding Path=Point}" /> </DataTemplate> </GridViewColumn.CellTemplate> </GridViewColumn> </GridView> </ListView.View> </ListView>
AlternationConverter で数に対応するブラシを定義。例では0なら白、1なら#dee7f5。二色を指定して、交互に色を変えます。数→色という対応さえできれば何色でもできます。単純に対応できなければ、この例をヒントにコンバータを書けばできると思います。
ListView というか GridView を縞々にするので、ListViewItem の背景を設定するスタイルを定義。RelativeSource はなかなかややこしい。WPF の外側のきらびやかなイメージを支える内臓とか血管みたいなもの。かなりグロテスク。
閑話休題。最後に ListView に AlternationCount を設定。二色の交互なので2を設定。ItemContainerStyle に ListViewItem に対するスタイルを設定して終了。AlternationIndex が 0,1 と交互に繰り返すことで背景色に変換されます。
参考: いつも参考にさせていただいております(^^)