2012-04-26 57 views
2

我有一个叫做CompanyListViewModel的ViewModel。它代表我申请中的公司名单。它具有ObservableCollection<CompanyViewModel>类型的属性,ListView绑定到该属性。我应该在多个上下文中使用ViewModels /模型吗?

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的新模式打开一个新窗口,将其放置在一个新的视图模型,并打开一个窗口,与此有关。

我应该使用哪种方法?

回答

2

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

当你想要所有的地方时,视图模型被用来立即显示对模型所做的任何改变,即使它们没有被用户确认,你也应该共享你的视图模型。

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

相关问题