Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class PeopleViewModel
- {
- public ICollectionView SearchPeopleView { get; private set; }
- public ObservableCollection<SearchPerson> SearchPeople { get; private set; }
- private string _searchString = "";
- public string SearchString
- {
- get { return _searchString; }
- set
- {
- _searchString = value;
- SearchPeopleView.Refresh();
- }
- }
- public PeopleViewModel()
- {
- SearchPeople = MockData();
- SearchPeopleView = CollectionViewSource.GetDefaultView(SearchPeople) as CollectionView;
- SearchPeopleView.Filter = ViewFilter;
- }
- private ObservableCollection<SearchPerson> MockData()
- {
- return new ObservableCollection<SearchPerson>(
- Enumerable.Range(1, 10000)
- .Select(i => new SearchPerson() { FullName = $"{i} name" }));
- }
- private bool ViewFilter(object obj)
- {
- var user = obj as SearchPerson;
- return user != null && user.FullName.Contains(_searchString);
- }
- }
- class SearchPerson
- {
- public string FullName { get; set; }
- }
- /*
- <!-- Xaml -->
- <Window x:Class="WpfApp1.MainWindow"
- xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
- xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
- xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
- xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
- mc:Ignorable="d"
- Title="MainWindow" Height="350" Width="525">
- <DockPanel LastChildFill="True">
- <TextBox DockPanel.Dock="Top" Text="{Binding SearchString, UpdateSourceTrigger=PropertyChanged, Delay=50}"/>
- <DataGrid
- ItemsSource="{Binding SearchPeopleView}">
- <DataGrid.Columns>
- <DataGridTextColumn Binding="{Binding FullName}" Width="*"/>
- </DataGrid.Columns>
- </DataGrid>
- </DockPanel>
- </Window>
- */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement