Skip to content

Instantly share code, notes, and snippets.

@sdenchev
Last active July 25, 2023 21:42
Show Gist options
  • Save sdenchev/8691414 to your computer and use it in GitHub Desktop.
Save sdenchev/8691414 to your computer and use it in GitHub Desktop.
WPF filtering with CollectionView
<Window x:Class="Filtering.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:l="clr-namespace:Filtering"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<l:MainWindowViewModel x:Key="ViewModel"/>
</Window.Resources>
<Grid DataContext="{StaticResource ViewModel}">
<ListView ItemsSource="{Binding Collection}"/>
<TextBox Width="100" HorizontalAlignment="Right" VerticalAlignment="Top" Text="{Binding Path=Filter, UpdateSourceTrigger=PropertyChanged}"/>
</Grid>
</Window>
using System;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Windows.Data;
namespace Filtering
{
public class MainWindowViewModel : INotifyPropertyChanged
{
private string filter;
public string Filter
{
get { return filter; }
set
{
filter = value;
CollectionViewSource.GetDefaultView(Collection).Refresh();
RaisePropertyChanged("Filter");
}
}
public ObservableCollection<string> Collection { get; set; }
public MainWindowViewModel()
{
Collection = new ObservableCollection<string>(
System.IO.File.ReadAllLines("namae.txt"));
CollectionViewSource.GetDefaultView(Collection).Filter = new Predicate<object>(Contains);
}
private bool Contains(object o)
{
if (Filter != null)
return ((string)o).Contains(Filter);
return true;
}
public event PropertyChangedEventHandler PropertyChanged;
private void RaisePropertyChanged(string name)
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(name));
}
}
}
Ai
Aiko
Aimi
Aina
Airi
Akane
Akemi
Aki
Akiko
Akira
Ami
Aoi
Asuka
Atsuko
Aya
Ayaka
Ayako
Ayame
Ayane
Ayano
Chika
Chikako
Chinatsu
Chiyo
Chiyoko
Cho
Chou
Chouko
Emi
Etsuko
Hana
Hanako
Haru
Haruka
Haruko
Haruna
Hikari
Hikaru
Hina
Hinata
Hiroko
Hitomi
Honoka
Hoshi
Hoshiko
Hotaru
Izumi
Junko
Kaede
Kanon
Kaori
Kaoru
Kasumi
Kazue
Kazuko
Keiko
Kiku
Kimiko
Kiyoko
Kohaku
Kokoro
Kotone
Kumiko
Kyo
Kyou
Mai
Makoto
Mami
Manami
Mao
Mariko
Masami
Masuyo
Mayu
Megumi
Mei
Michi
Michiko
Midori
Mika
Miki
Miku
Minako
Mio
Misaki
Mitsuko
Miu
Miyako
Miyu
Mizuki
Moe
Momoka
Momoko
Moriko
Nana
Nanami
Naoko
Naomi
Natsuki
Natsuko
Natsumi
Noa
Noriko
Ran
Rei
Ren
Riko
Rin
Rina
Rio
Sachiko
Saki
Sakura
Sakurako
Satomi
Sayuri
Setsuko
Shinju
Shinobu
Shiori
Shizuka
Shun
Sora
Sumiko
Suzu
Suzume
Takako
Takara
Tamiko
Tomiko
Tomoko
Tomomi
Tsubaki
Tsubame
Tsubasa
Tsukiko
Ume
Umeko
Wakana
Yasu
Yoko
Yoshi
Yoshiko
Youko
Yua
Yui
Yuina
Yuki
Yukiko
Yuko
Yumi
Yumiko
Yuri
Yuu
Yuuka
Yuuki
Yuuko
Yuuna
Yuzuki
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment