複雑な問題のようには聞こえませんが、うまく説明されていません。より良い例を教えてください。
MVVM パターンを使用していますか? たとえば、「CustomersListViewModel」と「CustomerDetailsViewModel」のように、ビューを複数のビューとビュー モデルに分割できると思います。
ListBox を Customers のコレクションにバインドし、"SelectItem" を "SelectedCustomer" (CustomersListViewModel 内) というプロパティに設定すると、CustomersListBox で選択が変更されると、"SelectedCustomerChanged" などのメソッドが呼び出されます。同様に、基本的に「CustomersDetailsViewModel」を新規作成し (選択した顧客をパラメーターとして渡す)、これにより新しい CustomerDetails が表示されます。
顧客を交換している単一のビューがあるように思えます。これにより、コンボボックスで selectionchanged イベントが発生し、問題が発生します。お客様の
例:
CustomersListViewModel
- BindableCollection Customers (ListBox にバインド)
- Customer SelectedCustomer (ListBox SelectedItem にバインド)
- CustomerDetailViewModel CustomerDetailViewModel (ContentControl にバインド)
- SelectedCustomerChanged (ListBox の SelectionChanged イベントで発生)
CustomerDetailViewModel (コンストラクタ パラメータで Customer オブジェクトを受け入れます)
- Customer CurrentCustomer (この Customer オブジェクトのプロパティにコントロールをバインドします)
「SelectedCustomerChanged」メソッドは次のようになります...
public void SelectedCustomerChanged()
{
this.CustomerDetailViewModel = new CustomerDetailViewModel(this.SelectedCustomer)
// Replace this with some activation of view code?
this.ActivateViewModel(this.CustomerDetailViewModel)
}
それが私のアプローチでしょうか?
ありがとう、これが役立つことを願っています。
ベン