C#の WPF Prism でナビゲート画面の遷移方法について説明します。
下記のように、ボタンを押すと画面が切り替わる処理です。 (ダイアログではなく、画面内の表示が切り替わります。)
対象ファイル(例)
コーディングが必要なファイルは下記の A~C です。
MainWindowView.xaml(画面遷移元) ・・・A
①ボタンにCommandを追加
画面遷移元のViewのボタンに対して、CommandにBindingでデリゲートコマンド名称を記載します。
MainWindowViewModel.cs(画面遷移元) ・・・B
②ViewModelにIRegionManagerの変数を追加
画面遷移元のViewModelに、IRegionManagerのプライベート変数を追加し、コンストラクタでセットします。
③ボタン押下時の実行メソッドを追加
ボタン押下イベントを受け取るデリゲートコマンドのプロパティを追加し、ボタン押下時のExcuteメソッドを実装します。
▼上記②~③のサンプルコード
SampleNavigationViewModel.cs(画面遷移先) ・・・C
④INavigationAwareインターフェースを実装
画面遷移先のViewModelに、INavigationAwareインターフェース と IRegionMemberLifetimeインターフェースを実装します。
※2023/3/5 追記 ViewModelインスタンスのメモリ開放のため、IRegionMemberLifetimeインターフェース実装を追加しました。
⑤インターフェースのメソッドを変更
INavigationAwareを実装した事で追加される IsNavigationTarget の 戻り値を true とし、KeepAlive を false にして下さい。そうすれば、画面破棄でメモリが開放されます。
▼上記④~⑤のサンプルコード
App.xaml.cs ・・・D
⑥RegisterTypes内でViewを登録
containerRegistry.RegisterForNavigationに設定したViewが画面遷移可能となります。