3

ビューを開くたびに、各モデル プロパティへの取得リクエストの数が 1 ずつ増えます。明確にするために、ビューを一度開いて閉じてから再度開くと、各プロパティに対して 2 つのget要求があり、プロパティが設定されRaisePropertyChanged("propertName")がトリガーされると、再び 2 つのget要求が発生します。getリクエストの数は、ビューがインスタンス化された回数と常に同じです! 私はこの問題の解決策をデバッグしましたが、ビューが閉じられ、バインディングが保留されているときにユーザーコントロールが破棄されていないことをすべて示しています。

これに対処するにはどうすればよいですか? ユーザー コントロールの破棄を検討しましたが、これを修正するのに役立つものを見つけることができませんでした。多分私は正しいトピックを探していませんか?どんな助けや指針も大歓迎です - ありがとう!

4

1 に答える 1

5

WPF コントロールは IDisposable を実装していないため、破棄する必要はありません。「ガベージコレクションの対象としてマークされていません」と言いたいと思います

あなたの問題は、イベント参照と呼ばれるものに関連しているようです。生きているインスタンス (ウィンドウ/ユーザー コントロールではないクラス) の一部は、イベントへの参照を保持します。リンクが存在する Window または UserControl を閉じても、自動的にクリアされません。

ウィンドウ/ユーザーコントロールを閉じるときは、次のようにイベントを逆参照する必要があります

EventName-= methodHandler また this.UserControlInstance=null

ここで興味深いパターンを読むことができます

于 2013-10-07T10:41:24.633 に答える