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.cs
using System.Windows;
using System.Windows.Data;
using System.Collections.ObjectModel;
namespace WpfApplication1
{
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
}
private void CollectionViewSource_EuropeFilter(object sender, FilterEventArgs e)
{
Country country = e.Item as Country;
e.Accepted = (country.Continent == Continent.Europe);
}
}
public class Country
{
private string name;
private Continent continent;
public string Name
{
get{ return name;}
set{name = value;}
}
public Continent Continent
{
get{return continent;}
set{continent = value;}
}
public Country(string name, Continent continent)
{
this.name = name;
this.continent = continent;
}
}
public enum Continent
{
Europe,
NorthAmerica,
}
public class Countries : Collection<Country>
{
public Countries()
{
this.Add(new Country("Great Britan", Continent.Europe));
this.Add(new Country("USA", Continent.NorthAmerica));
this.Add(new Country("Canada", Continent.NorthAmerica));
}
}
}
Related examples in the same category