Я хотел выполнить привязку к 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"));
}
}
Я полагаю, причина этого уже указана здесь Джоном Скитом.
Никогда тем не менее, я ожидаю, что должен быть способ получить правильное представление. Я ошибаюсь?