public CompactContentPage() { InitializeComponent(); DataContextChanged += (source, e) => { var mainWindowViewModel = (MainWindowViewModel)DataContext; var liveFilteringProperties = new ObservableCollection <string>() { nameof(GameFolderPair.SourceEntry) + "." + nameof(GameFolder.Size), nameof(GameFolderPair.DestinationEntry) + "." + nameof(GameFolder.Size), }; var setCollectionView = new SetCollectionView <GameFolderPair, GameFolderPairEnumerable>(mainWindowViewModel.FolderPairCollection, liveFilteringProperties); setCollectionView.Filter = obj => { var folderPair = (GameFolderPair)obj; return(folderPair.SourceEntry != null && mainWindowViewModel.PassesFilter(folderPair.SourceEntry) || folderPair.DestinationEntry != null && mainWindowViewModel.PassesFilter(folderPair.DestinationEntry)); }; mainWindowViewModel.PassesFilterChangedObservable.Subscribe(pattern => { setCollectionView.NotifyFilterChanged(); }); compactDataGrid.ItemsSource = setCollectionView; }; }
private void SetItemsSource(MultiSelectDataGrid dataGrid, FolderCollection folderCollection, MainWindowViewModel mainWindowViewModel) { var liveFilteringProperties = new ObservableCollection <string> { nameof(GameFolder.Size) }; var setCollectionView = new SetCollectionView <GameFolder, AsyncObservableKeyedSet <string, GameFolder> >(folderCollection.Folders, liveFilteringProperties); setCollectionView.Filter = obj => mainWindowViewModel.PassesFilter((GameFolder)obj); mainWindowViewModel.PassesFilterChangedObservable.Subscribe(pattern => setCollectionView.NotifyFilterChanged()); dataGrid.ItemsSource = setCollectionView; }