3

Castle DPを使用してエンティティをプロキシでラップしています。エンティティは、INotifyPropertyChangedを単独で実装しています。setが呼び出されたときにイベントを発生させます。

プロキシを介してエンティティを操作し、それらがすべて合格したときにpropertychangedイベントが発生することを確認するために、ラッピングに関する単体テストを作成しました。

問題は、画面を使用する実際のアプリケーションにあります。実際にDPであるプロパティに画面をバインドすると、プロパティに登録する画面が別の方法で変更され、内部に登録管理を実装しない限り機能しません。インターセプターコード

なぜこれが動作なのですか、プロパティに登録するときに変更されたプロパティに対してwpfは何をしますか?

4

3 に答える 3

1

キャッスル AOP では、留意すべき重要な点が 1 つありEqualsます。メソッドが期待どおりに機能していないということです。

ここを見てください: RRSL-Lite.EntityAOP。私は同じ考えを持っていました-INPC用のAOPを持ち、このライブラリを作成しました。これを使用する方法の簡単なサンプルを次に示します。

于 2012-09-11T08:52:43.310 に答える
0

インターフェイス プロキシとして生成されたプロキシ クラスには、プロパティの明示的なインターフェイス実装があり、明示的に一致しない限り、WPF バインディングは機能しません。

2 つの解決策は、バインド パスを変更して明示的にインターフェイスを含めることです。

{Binding Path=(local:IEntity.ID)} instead of just {Binding ID}

または、ビュー モデル/エンティティに仮想メソッド プロキシを使用し、インターセプトするメソッドを仮想化します。

于 2011-01-12T15:31:20.120 に答える