我应该在多个上下文中使用ViewModel /模型吗?

时间:2012-04-26 11:09:55

标签: c# wpf mvvm

我有一个名为CompanyListViewModel的ViewModel。它代表了我的应用程序中的公司列表。它有一个类型ObservableCollection<CompanyViewModel>的属性,ListView绑定到该属性。

CompanyListViewModel有一个名为OpenCommand的命令。此命令在新窗口中打开所选公司以进行编辑。

OpenCommand调用的函数如下所示:

public void Open()
{
    Company selectedCompany = SelectedCompanyViewModel.Model
    CompanyViewModel elm = new CompanyViewModel(selectedCompany);
    openHandler(elm); // opens a new window with the given vm.
}

所以这个功能:

  • 获取当前选定的CompanyViewModel
  • 检索基础模型。
  • 实例化一个新的viewmodel,它共享现有viewmodel的模型。
  • 打开此视图模型。

这是对的吗?我有两种选择:

  • 使用现有的viewmodel
  • 打开一个新窗口
  • 从数据库中获取新模型,将其放入新的视图模型中,然后打开一个窗口。

我应该使用哪种方法?

1 个答案:

答案 0 :(得分:2)

这取决于您的应用程序应具备的功能。当对模型所做的更改必须出现在使用模型的其他地方时,使用相同的模型似乎是正确的方法。

当您想要所有地点时,使用视图模型立即显示对模型所做的任何更改,即使用户未确认这些更改,您也应该共享您的视图模型。

当您希望两个实例之间没有逻辑连接时,可以使用完全不同的模型打开新窗口。然后你必须依赖你的业务逻辑,当第二个模型被更改并保存回数据库时,第一个模型被替换。