我应该在多个上下文中使用视图模型/模型吗?
本文关键字:模型 视图 上下文 我应该 | 更新日期: 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 获取一个新模型,将其放置在新的视图模型中,然后打开一个窗口。
我应该使用哪种方法?
这取决于应用程序应具有的功能。当对模型所做的更改必须存在于使用该模型的所有其他地方时,使用相同的模型似乎是正确的方法。
如果您希望视图模型的所有位置都立即显示对模型所做的任何更改,即使这些更改未经用户确认,也应共享视图模型。
当您不希望两个实例之间没有逻辑连接时,使用完全不同的模型打开新窗口是一种替代方法。然后,您必须依靠业务逻辑,当第二个模型被更改并保存回数据库时,第一个模型将被替换。