我应该在哪里放置UserControls列表而不是打破MVVM?

时间:2010-11-16 13:35:26

标签: wpf mvvm

我有一个制表符控件,其中每个TabItem都是UserControl。我想在TabControl的ItemsSource中保存UserControls。 ItemsSource列表是否在Window的ViewModel中?如果是这样的话,我觉得它打破了MVVM,因为ViewModel现在会有GUI控件。或者我将此列表放在包含选项卡控件的窗口的代码隐藏中?

任何建议都会很棒!

4 个答案:

答案 0 :(得分:0)

使用选项卡控件,通常在XAML中静态创建单个选项卡,而不是在运行时通过数据绑定创建。但是你没有理由不这样做。如果您有一组视图,它们肯定应存储在视图中。

请记住,您还可以将ItemsSource绑定到ViewModels对象列表,WPF将使用ItemTemplate为您生成视图,并将ViewModel对象设置为DataContext。这个ViewModel集合应该存储在视图模型中,尽管在某些时候视图模型显然必须存储在视图中。

答案 1 :(得分:0)

这很有可能以多种方式完成,所有这些方式都在争论它们对“MVVM友好”的方式。

我的设置如下所示。

我的主窗口有一个绑定到MainWindowViewModel的DataContext,其中包含一个属性

public ObservableCollection<Workspace> WorkspaceCollection{get;set;}

MainWindow有TabControl ItemsSource绑定WorkspaceCollection

工作区都是视图模型,并通过DataTemplates绑定到不同的视图/用户控件

答案 2 :(得分:0)

您可以查看 WPF Application Framework (WAF) Write 示例应用程序。它有一个TabControl,其中每个TabItem都是UserControl,它通过应用MVVM模式来实现这一点。

答案 3 :(得分:0)

这就是我所做的。 我创建了一个我的所有控件实现的接口,IMyAppControl,它有一些信息,如标题,描述,其他元数据。

My Main Window有一个ObservableCollection,它与ItemsSource绑定的标签有关。

相关问题