【发布时间】:2011-03-04 17:31:21
【问题描述】:
我有一个我正在尝试使用 MVVM 模式设计的应用程序。在我的模型中,我有组和案例。一个组可能包含其他组以及案例。现在,我想在我的视图中的 TreeView 中显示这些。因此,由于组可能包含其他组和案例,因此树最终可能看起来像这样:
组
--组
----案例
----案例
--组
----组
----案例
--案例
案例
我的 View 附加到一个 ViewModel,其中包含一个 ObservableCollection 组。我的问题是,我可以让 TreeView 按我的意愿显示的唯一方法是在指向数据类型(组或案例)的资源中使用 HierarchicalDataTemplate,我觉得这会破坏 MVVM(视图应该在哪里不知道模型)。
这行得通:
<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 的精神?否则我该怎么做?
【问题讨论】:
标签: c# wpf visual-studio-2010 mvvm