Wpf collectionviewsource.view null

У меня есть фильтрация 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 (); - не может FindResource ("GameListCVS")

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

Я не понимаю твоей проблемы. Когда вызывается RefreshList ()? До того, как представление было загружено?

mm8 01.11.2018 13:45
0
1
213
1

Ответы 1

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

Извините, а что вы имели в виду, говоря вместо этого, унаследовать от ListCollectionView?

Pete Kemp 31.10.2018 16:57

Другие вопросы по теме