ナビゲーションの実装に関しては、ViewModel クラスは RootFrame にアクセスする必要があります
これは誤った仮定です。
パブリッシャー (ViewModel) とサブスクライバー (ビューを開くのを担当するオブジェクト) の間でメッセージの配信を担当するメッセージ ブローカー (単一のオブジェクト) を使用できます。
ほとんどの MVVM フレームワークには、このようなブローカーがあります。
依存関係について
Broker の唯一の責任は、イベントを発生させることです。したがって、一般に、パブリッシャーが呼び出すことができるいくつかのメソッドと、サブスクライバーが登録できるいくつかのイベントを公開します。
MVVM では、このメカニズムを使用して、ビューを開く必要があることを通知するイベントを ViewModel に発生させ、このイベントをサブスクライブする View Manager を発生させることができます。View Manager は、View をインスタンス化し、正しい ViewModel をアタッチできる必要があります。
ViewManager がすべての View および ViewModel への参照を必要としないようにするには、イベントの論理名 (単なる文字列) に渡し、構成ファイルのリフレクションまたは静的リストを使用して、View Manager に一致する View(Model) タイプを検索させることができます。 .
この方法では、循環参照参照は必要ありません。実際、MVVM の適切な依存関係に反する参照が必要な場合は、まずセットアップを疑ってから、View や ViewModels の基本クラスの使用を検討する必要があります。