Как я могу получить CollectionView, определенный в XAML

Я хотел выполнить привязку к ObservableCollectionв XAML, а также применить к ней группировку. В принципе, это работало нормально.


    
        
            
        
        
            
        
    

Затем выражение привязки данных стало ItemsSource="{Binding Source={StaticResource ResourceKey=cvs}}"вместо ItemsSource="{Binding Path=TestTemplates}".

Сначала все казалось классным, пока я не захотел обновить UI из модели представления.Проблема в том, что CollectionViewSource.GetDefaultView(TestTemplates)возвращал представление, отличное от представления из XAML. где применялась группировка. Таким образом, я не мог установить выделение или сделать с ним что-то полезное.

Я мог исправить это, снова привязав список непосредственно к свойству модели представления и настроив группировку в коде программной части. Но Я не очень доволен этим решением.

private void UserControlLoaded(object sender, RoutedEventArgs e)
{
    IEnumerable source = TemplateList.ItemsSource;
    var cvs = (CollectionView)CollectionViewSource.GetDefaultView(source);
    if (cvs != null)
    {
        cvs.SortDescriptions.Add(new SortDescription("Title", ListSortDirection.Ascending));
        cvs.GroupDescriptions.Add(new PropertyGroupDescription("TestCategory"));
    }
}

Я полагаю, причина этого уже указана здесь Джоном Скитом.

Никогда тем не менее, я ожидаю, что должен быть способ получить правильное представление. Я ошибаюсь?

8
задан Community 23 May 2017 в 10:31
поделиться