私はPRISMRegionManagerを持っており、いくつかの領域(上部にリボン領域、その下にビューのメインコンテンツ領域)があり、かなり基本的です。
アプリは、メインコンテンツ領域の「ホーム」ビューから始まります。リボンのボタンをクリックすると、コンテンツ領域に2番目のビューが挿入され、リージョンマネージャーでそのビューに移動します。このビューのボタンをクリックすると、ボタンが削除され、元のビューが表示されます。
現在、RegionManager.Add()メソッドを使用してこれを実行し、2番目のビューを手動で追加しています。削除する場合は、現在アクティブな削除を取得するマネージャークラスによって消費されるイベントを公開し、リージョンマネージャーでRemove()を呼び出してから、元のビューに戻ります。
これはすべてうまく機能しますが、Remove()を呼び出した後に2番目のビューが有効なままであり、その存続期間中に作成されたサブスクリプションを処理し続ける場合を除きます。弱いイベント参照に対してfalseを指定してSubscribeを明示的に呼び出しようとしましたが、これはとにかくデフォルトであり、役に立ちませんでした。ビューの作成(検出と挿入)と、削除と非アクティブ化によるビューの削除の両方のタイプを試しました。それらのどれも助けませんでした。これは本当の問題です。将来同じビュー(そのビューの新しいインスタンス)を作成したい場合、それらのインスタンスのいくつかは同じイベントにサブスクライブしていても、それらのインスタンスがいくつか残っています。何年も前にRegionManagerから削除されました。
ビューでサブスクライブしているすべてのイベントから手動でサブスクライブを解除する必要がありますか(非常に望ましくありません)?または、サブスクリプションが削除されるように、コントロールを破棄する/非アクティブとしてマークする方法はありますか?
ここで何か馬鹿げたことをしているような気がしますが、完全に困惑しています。
ありがとう