У меня есть приложение, которое я пытаюсь разработать с использованием шаблона MVVM.В моих моделях у меня есть группа и случай.Группа может содержать другие группы, а также случаи.Теперь я хочу отобразить их в виде дерева в моем представлении.Так как группы могут содержать другие группы и случаи, дерево может выглядеть примерно так: * Группа 1002 *- * Группа 1004 *---- Case ---- Case - * Группа 1010 *---- * Группа 1012 *---- Case - Case Case
У меня есть свой View, присоединенный к ViewModel, который содержит ObservableCollection of Groups.Моя проблема в том, что единственный способ заставить TreeView отображаться так, как мне хотелось бы, - это использовать HierarchicalDataTemplate в ресурсах, указывающих на тип данных (Group или Case), который, как я чувствую, нарушает MVVM (где View долженне знаю о модели).
Это работает:
<UserControl.Resources>
<HierarchicalDataTemplate DataType="{x:Type models:Group}" ItemsSource="{Binding Children}">
<TextBlock Text="{Binding GroupName}" />
</HierarchicalDataTemplate>
<DataTemplate DataType="{x:Type models:Case}">
<TextBlock Text="{Binding CaseName}" />
</DataTemplate>
</UserControl.Resources>
и для TreeView:
<TreeView ItemsSource="{Binding AvailableCaseGroups}" />
Это нарушает дух MVVM?Как я могу сделать это иначе?