如何在一个MainWindow中使用多个View模型

时间:2013-01-11 11:56:19

标签: wpf xaml mvvm viewmodel icommand

我在WPF中有一个C#项目。我之前和MVC一起工作过,现在我正试图将MVVM与XAML结合使用。

我有多个模型,我有一个带Tabitems的GUI窗口,我有多个ViewModel。 每个标签项都与每个模型相关,因此我为每个模型都有一个ViewModel。

现在我想使用绑定(为什么还要使用WPF / XAML)。如何将按钮绑定到ViewModel X中的命令?

E.g:

  • 两种模式:房子和人
  • 查看:GUI中的两个TabItem,一个关于与房屋交互的TabItem,以及一个用于人员的TabItem。
  • 两个ViewModel,与每个TabItem相关联。
  • 我有命令出售房屋。

我看到很多代码只是绑定到命令的名称,但由于我有多个视图,而不仅仅是1,我该怎么做?我应该创建一个能处理所有其他ViewModel的ViewModel吗?

2 个答案:

答案 0 :(得分:1)

  

我看到很多代码只是绑定到命令的名称,但由于我有多个视图,而不仅仅是1,我该怎么做?

确保您了解绑定系统的工作原理。您绑定到DataContext。因此,如果每个单独的选项卡都有一个单独的DataContext值集,那么您可以使用命令的名称进行绑定。

了解这一点,您可以继续使用您已建立的模式。在我的拙见中,我认为它会变得太复杂。大多数MVVM开发人员正在与View to ViewModel应用一对一的关系(虽然谈论UserControl对象时事情变得棘手)。没有什么是一成不变的,所以最终由你决定如何进行。

答案 1 :(得分:0)

我猜你的视图模型数量有限。所以你有2个选择:第一个是使用DataTemplateSelector,第二个是在xaml中定义每个TabItem视图并将每个Content绑定到必要的VM。