Wrap collection based resource in a CollectionViewSource
<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"
Title="WPF" Height="124" Width="124">
<Window.Resources>
<local:Countries x:Key="countries"/>
<CollectionViewSource x:Key="cvs" Source="{Binding Source={StaticResource countries}}"
Filter="CollectionViewSource_EuropeFilter" />
</Window.Resources>
<Grid>
<ItemsControl ItemsSource="{Binding Source={StaticResource cvs}}"
DisplayMemberPath="Name"/>
</Grid>
</Window>
//File:Window.xaml.vb
Imports System.Windows
Imports System.Windows.Data
Imports System.Collections.ObjectModel
Namespace WpfApplication1
Public Partial Class Window1
Inherits Window
Public Sub New()
InitializeComponent()
End Sub
Private Sub CollectionViewSource_EuropeFilter(sender As Object, e As FilterEventArgs)
Dim country As Country = TryCast(e.Item, Country)
e.Accepted = (country.Continent = Continent.Europe)
End Sub
End Class
Public Class Country
Private m_name As String
Private m_continent As Continent
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
Public Sub New(name As String, continent As Continent)
Me.m_name = name
Me.m_continent = continent
End Sub
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