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

本文关键字:模型 视图 上下文 我应该 | 更新日期: 2023-09-27 18:32:23

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

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
  • 检索基础模型。
  • 实例化共享现有视图模型模型的新视图模型。
  • 打开此视图模型。

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

  • 使用现有视图模型打开新窗口
  • 从 datbase 获取一个新模型,将其放置在新的视图模型中,然后打开一个窗口。

我应该使用哪种方法?

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

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

如果您希望视图模型

的所有位置都立即显示对模型所做的任何更改,即使这些更改未经用户确认,也应共享视图模型。

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