Filter Data in a Collection, Set the Filter property to a FilterEventHandler
<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
1. | Use CollectionViewSource to sort and group data in XAML. | ||
2. | Apply Custom Grouping to a Collection | ||
3. | Set DisplayMemberPath for ItemsControl | ||
4. | Wrap collection based resource in a CollectionViewSource |