WPF CollectionViewSource.View null - PullRequest
       23

WPF CollectionViewSource.View null

0 голосов
/ 31 октября 2018

У меня есть фильтрация CollectionViewSource от одного триггера, но у меня проблемы с получением второго фильтра. Проблема исходит от кнопки в одном представлении (MainWindow.xaml), которая должна быть триггером для CollectionViewSource в PosterView.

PosterView.xaml

        <CollectionViewSource x:Key="GameListCVS"
                          Source="{Binding PosterViewOC}"
                          CollectionViewType="{x:Type dat:ListCollectionView}">
        <CollectionViewSource.SortDescriptions>
            <scm:SortDescription PropertyName="Title" />
        </CollectionViewSource.SortDescriptions>
    </CollectionViewSource>

PosterView.xaml.cs

        private void SearchString_TextChanged(object sender, TextChangedEventArgs e)
        {
        RefreshList();
        }
        public void RefreshList() 
        {
        GameListCV = ((CollectionViewSource)(FindResource("GameListCVS")));
        GameListCV.Filter += new FilterEventHandler(GenreFilter);
        GameListCV.Filter += new FilterEventHandler(GameSearch);
        if (GameListCV.View != null) //This is getting a null "GameListCV.View" on genre only, works if searchbar updated
            GameListCV.View.Refresh();
        }

MainWindow.xaml.cs

        private void ApplyGenreFilter_OnClick(object sender, RoutedEventArgs e)
    { 
        string genreToFilter = ((Button)sender).Tag.ToString();
        pv.GenreToFilter(genreToFilter);//passes the button tag and runs RefreshList();
        MenuToggleButton.IsChecked = false; //hide hamburger
    }

RefreshList (), по-видимому, получает представление для CVS, только если текст вводится в строку поиска. Я попытался добавить кнопку в PosterView для обновления GenreFilter, и это прекрасно работает, поэтому это означает, что проблема исходит от MainWindow, имеющего кнопку, которая затем вызывает PosterView.RefreshList (); - он не может найти ресурс («GameListCVS»)

Есть ли обходной путь для этого (какой-то способ явно сказать FindResource - «Посмотрите в PosterView for GameListCVS») - поскольку в настоящее время пользователь должен искать в TextBox, удалять его, а затем он может отфильтровать жанры в порядке

1 Ответ

0 голосов
/ 31 октября 2018

Я думаю, что вместо этого вам нужно наследовать от ListCollectionView, и внутри конструктора вы можете установить свойство CustomSort там

...