2012-04-26 14 views
2

私はCompanyListViewModelと呼ばれるViewModelを持っています。私のアプリケーション内の企業のリストを表します。これは、ListViewがバインドするタイプObservableCollection<CompanyViewModel>のプロパティを持ちます。複数のコンテキストでViewModel /モデルを使用すべきですか?

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から新しいモデルを取得し、既存のviewmodel
  • を使用して新しいウィンドウを開き、新規のviewmodelに置き、そしてこれでウィンドウを開く:私は2つの選択肢があります。

どの方法を使用しますか?

答えて

2

これは、アプリケーションに必要な機能によって異なります。モデルに加えられた変更が、そのモデルが使用されている他の場所のすべてに存在する必要がある場合、同じモデルを使用することが正しい方法であるようです。

すべての場所が必要な場合は、ビューモデルを共有する必要がある場合は、ビューモデルを使用してモデルに加えられた変更がユーザーによって確認されなくてもすぐに表示されます。

完全に異なるモデルで新しいウィンドウを開くことは、両方のインスタンスを論理的に接続したくない場合の代替方法です。次に、最初のモデルが2番目のモデルが変更され、データベースに戻されたときに置換されるというビジネスロジックに頼る必要があります。

関連する問題