2

DynamicObjectから派生したWPFプロジェクトのBaseViewModelを作成中ですが、メインエンティティに「関連する」エンティティへのプロパティの変更を処理する方法がよくわかりません(メインエンティティのナビゲーションプロパティビューモデル)。

例えば:

VM:

 public class CustomerCRUDViewModel: BaseEntityViewModel<Customer>
    {
        ...
    }

たとえば、これはカスタマーCRUDのVMになります。たとえば、Customerエンティティには、Address(Addressタイプのエンティティ)と呼ばれるナビゲーションプロパティがあります。

ここで問題となるのは、ビューをAddress内のプロパティにバインドするときに、変更がVMに報告されず、エンティティに直接報告されるため、VMレベルで定義された動作がトリガーされないことです。

説明が十分に明確でないかもしれないことを私は知っています、私は私の貧弱な英語で自分自身をよりよく説明する方法を知らないだけです。

私の質問は、汎用のDynamicObjectベースのVMが、メインエンティティの一部ではないプロパティの動作を定義する必要があるシナリオをどのように処理するかということです。

4

2 に答える 2

1

System.Dynamic.DynamicObject.TryGetMember'getter'メソッドのBaseViewModelsのキャッシュされたインスタンスでナビゲーションプロパティをラップすることで、これを最終的に解決しました。それが最もパフォーマンスの高いソリューションであるかどうかはわかりませんが、派生エンティティビューモデルに「ナビゲーションビューモデル」をいつでも強く入力できます。

于 2012-07-06T16:32:16.050 に答える
0

モデル(この場合はCustomer)がインターフェースを実装している場合、viewMoodelはModelsイベントINotifyPropertyChangedに登録できます。PropertyChangedこのようにして、ViewModelは、発生しているプロパティの変更について通知を受け、それに応じて反応する可能性があります。

于 2012-07-02T18:00:18.797 に答える