MVVM Light Toolkit を利用する MVVM デザイン パターンを使用して WPF アプリケーションを開発しています。現在、私はこのようなシナリオを持っています。
アイテム コントロールを組織コレクションにバインドしています。
- 組織名とリストで構成される組織。
- プロジェクト名、リスト、新入社員で構成されるプロジェクト
- 従業員名、連絡先番号、電子メールで構成される従業員
ここで、従業員自体は、既存および新規の従業員データで再利用されるユーザー コントロールです。
ユーザーは、すべてのコントロールの Lost Focus イベントで、既存の従業員の詳細 (つまり、リスト) を更新できます。新しい従業員の追加に関しては、ユーザー コントロールのLost Focus Event を使用して状況を処理しました。そのため、MVVM Light Toolkit EventToCommandを使用してユーザー コントロールがフォーカスを失ったイベントでは、EventArgs を View Model に渡し、EventArgs から元のソースを見つけて(またはビジュアル ツリーをトラバースして)、それが挿入されるかどうかを確認して、挿入されるかどうかを識別します。フォーカスは、IsKeyBoardFocusWithin プロパティを使用して同じユーザー コントロール内にあります。
これはMVVMパターンの正しい実装ですか?
また、上記のアプローチを行うことで、次のことを行う必要があります。
ビジュアル ツリーをトラバースするか、EventArgs から元のソースを取得するには、System.Windows.Controls を参照する必要があります。
単体テストに関しては、EventArgs をモックするのはより困難です。
このシナリオを処理するためのより良い MVVM アプローチはありますか?</p>