我有一个名为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
这是对的吗?我有两种选择:
我应该使用哪种方法?
答案 0 :(得分:2)
这取决于您的应用程序应具备的功能。当对模型所做的更改必须出现在使用模型的其他地方时,使用相同的模型似乎是正确的方法。
当您想要所有地点时,使用视图模型立即显示对模型所做的任何更改,即使用户未确认这些更改,您也应该共享您的视图模型。
当您希望两个实例之间没有逻辑连接时,可以使用完全不同的模型打开新窗口。然后你必须依赖你的业务逻辑,当第二个模型被更改并保存回数据库时,第一个模型被替换。