0

PRISM WPF アプリケーションがあります。コンストラクターでイベント (CultureChangedEvent としましょう) をサブスクライブし、アクションを実行する PatientViewModel があります。

私のメイン ビュー モデルには、ObservableCollection があります。

ユーザーが ObservableCollection から PatientViewModel インスタンスを削除し、CultureChangedEvent が発生した場合、削除された PatientViewModel は引き続きメモリ内にあり、イベントを受け取ります。そのため、現在、PatientViewModel を削除するときは、イベントの登録を解除しています。しかし、これが正しいアプローチなのだろうか?または、何か不足していますか?

ありがとう!L

4

1 に答える 1

2

オブザーバブル コレクションからオブジェクトが削除されても、オブジェクトは存在し続けます (したがって、オブジェクトは引き続きイベントにサブスクライブします)。これを処理する方法は、許容できる解決策です。もう 1 つは、ObservableCollection を ReadOnlyObservableCollection として公開し、独自の追加関数と削除関数を提供することです。Remove 関数内でイベントのサブスクライブを解除し、プライベートな「通常の」ObservableCollection からアイテムを削除します。したがって、アイテムを削除する前に、イベントの登録を解除できます。

于 2011-05-09T19:22:26.437 に答える