2

というViewModelがありCompanyListViewModelます。これは、私のアプリケーションの会社のリストを表しています。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
  • 基になるモデルを取得します。
  • 既存のビューモデルのモデルを共有する新しいビューモデルをインスタンス化します。
  • このビューモデルを開きます。

これは正しいです?私には2つの選択肢があります:

  • 既存のビューモデルを使用して新しいウィンドウを開きます
  • データベースから新しいモデルを取得し、それを新しいビューモデルに配置して、これでウィンドウを開きます。

どの方法を使用すればよいですか?

4

1 に答える 1

2

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

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

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

于 2012-04-26T11:15:53.323 に答える