WPF アプリケーションで MVVM パターンを使用しています。パフォーマンスを向上させるために、ウィンドウをキャッシュしようとしています。そのために、私はそれらを決して閉じず、閉じる代わりに非表示にします。非表示のウィンドウはすべて辞書に保存されるので、再利用できます。ウィンドウが再び開いたら、新しいビュー モデルを作成し、それをキャッシュ ビューに関連付けます。
ただし、非表示のウィンドウが ViewModels のコマンドの CanExecute メソッドを呼び出し続けるため、問題があります。これにより、ユーザーが多数のウィンドウを開いたり閉じたりすると、パフォーマンスの問題が発生します。
Window.DataContext
プロパティを nullに設定したりClearValue(DataContextProperty)
、目標を達成したりすると、問題が発生します。双方向バインディングがある場合、それらはすべて、データ コンテキストからのバインド解除中に発生します。そのため、ビュー モデルの一部の値が null になります。ビューを非表示にした後にビューモデルからプロパティを読み取る場合があるため、これは望ましくありません。
主な問題の解決を手伝っていただけますか (非表示のウィンドウから CanExecute メソッドを呼び出さないでください)。