2012-04-26 56 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

這取決於您的應用程序應具有的功能。對模型所做的更改必須出現在使用模型的其他地方,使用相同的模型似乎是正確的方法。

當你想要所有的地方時,視圖模型被用來立即顯示對模型所做的任何改變,即使它們沒有被用戶確認,你也應該共享你的視圖模型。

當您希望兩個實例之間沒有邏輯連接時,用完全不同的模型打開新窗口是另一種選擇。然後你必須依賴你的業務邏輯,當第二個模型被更改並保存回數據庫時,第一個模型將被替換。

相關問題