Change the Appearance of Alternate Items in a List
<Window x:Class="WpfApplication1.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:WpfApplication1;assembly="
Title="WPF" Height="248" Width="128">
<Window.Resources>
<local:Countries x:Key="countries"/>
<Style x:Key="AlternateStyle">
<Setter Property="ListBoxItem.Background" Value="LightGray"/>
</Style>
</Window.Resources>
<Grid>
<ListBox DisplayMemberPath="Name" ItemsSource="{Binding Source={StaticResource countries}}" >
<ListBox.ItemContainerStyleSelector>
<local:AlternatingRowStyleSelector AlternateStyle="{StaticResource AlternateStyle}" />
</ListBox.ItemContainerStyleSelector>
</ListBox>
</Grid>
</Window>
//File:Window.xaml.vb
Imports System.Windows
Imports System.Windows.Controls
Imports System.Collections.ObjectModel
Namespace WpfApplication1
Public Class AlternatingRowStyleSelector
Inherits StyleSelector
Public Property DefaultStyle() As Style
Get
Return m_DefaultStyle
End Get
Set
m_DefaultStyle = Value
End Set
End Property
Private m_DefaultStyle As Style
Public Property AlternateStyle() As Style
Get
Return m_AlternateStyle
End Get
Set
m_AlternateStyle = Value
End Set
End Property
Private m_AlternateStyle As Style
Private isAlternate As Boolean = False
Public Overrides Function SelectStyle(item As Object, container As DependencyObject) As Style
Dim style As Style = If(isAlternate, AlternateStyle, DefaultStyle)
isAlternate = Not isAlternate
Return style
End Function
End Class
Public Class Country
Private m_name As String
Private m_continent As Continent
Public Sub New(name As String, continent As Continent)
Me.m_name = name
Me.m_continent = continent
End Sub
Public Property Name() As String
Get
Return m_name
End Get
Set
m_name = value
End Set
End Property
Public Property Continent() As Continent
Get
Return m_continent
End Get
Set
m_continent = value
End Set
End Property
End Class
Public Enum Continent
Europe
NorthAmerica
End Enum
Public Class Countries
Inherits Collection(Of Country)
Public Sub New()
Me.Add(New Country("Great Britan", Continent.Europe))
Me.Add(New Country("USA", Continent.NorthAmerica))
Me.Add(New Country("Canada", Continent.NorthAmerica))
End Sub
End Class
End Namespace
Related examples in the same category