エンティティ(従業員、ビジネスなど)の1つ以上のアドレスを表示/管理するユーザーコントロールがあります。MVVM/ViewModel/UserControl/DataContext/Command - デザインの問題/ディスカッション
私は、コントロール内のアドレスのUIをカプセル化することで、さまざまなビューからこのユーザーコントロールを活用しました。
私は保持するいくつかのviewmodelsを持って/さまざまな異なる視点からのアドレス収集公開 - これは、それぞれ通常、私は、ユーザーに適切なのDataContextに合格した
異なるViewModelに(各ビューの1 ViewModelに)によって管理されているがつまり、私はAddress Collectionを公開する様々なViewModelを持っていますが、私はDCバインディングを介して適切なコンテキストを渡すことができます。
私の質問は、どこにコマンドロジックを追加してアドレスを削除するのですか?私は単純にコードを繰り返すので、各ビューモデルで同じコマンドを置くことは望ましくありません。
MVVMを初めて使用しているので、IAddressCommandインターフェイスでクラスを作成してから、各ViewModelのコマンドをスタブアウトするだけですか?ビューモデルを別のViewModelにカプセル化するだけですか?
思考?
よろしく リチャード
いいですが、すでにすべてのViewModelの基本クラスがあり、複数の継承が機能しません。 – codeputer
@codputer既存の 'ViewModelBase'から継承したAddressViewModelを導入し、既存のクラスを継承するように変更することができます。 –
これは機能しますが、コンポーネントのDataContextの問題は、ViewModelから直接設定されたコマンドメンバとは異なるオブジェクトグラフのレベルで設定されます。 DataContextをオブジェクトグラフの上に移動すると、フィールドバインディングはツリーのさらに深いレベルを参照する必要があります。 – codeputer