コード例 #1
0
        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;
            };
        }
コード例 #2
0
        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;
        }