前回はNavigationService.NavigateAsync(“PageBView”);と記述することで,ViewModelからでもPgeBViewページに画面遷移できることを確認しました。ただ,”PageBView”というコーディングは,単純な文字列の為,少しバグの混入が気になります。要するに,PageBViewというクラスの名前を変更しても,文字列の為コンパイルエラーにならないので,変更漏れが発生しやすくなります。コンパイルが通ってしまうという事は,実行時にエラーになるため,不具合の混入に気付かずにリリースしてしまうという事です。その場合はクレーム等の問題になるため,何とか避けたいことです。今回はこのリテラル文字を取り除く方法を確認していきます。
リテラル文字を取り除く方法
リテラル文字を取り除くには「nameof」を使います。変更は次のように行います。
private void PageBShow()
{
NavigationService.NavigateAsync(nameof(PageBView));
}
MainPageViewModel.cs の最初のusingに「using BlankApp1.Views;」を追加します。 これで,PageBviewという文字列を記述したのと同じ効果が得られますが,PageBviewのクラス名が変更されても追従してコンパイルエラーになるので,確実にバグの混入を防ぐことができます。
■非公開コース「C#14新機能」プレゼント:
非公開コース「C#14新機能」(80分)をご覧になりたい方は
こちらからURLとパスワードを発行していますので、ご覧になってみてください。
非公開コース「C#14新機能」を観る
#01_Prismのインストール
#02_各デバイスでの起動確認
#03_Prismの構成
#04_ViewとViewModelに分ける理由
#05_ラベルの値をバインディング
#06_ボタンのデータバインディング
#07_ViewModelに対してテストコードを書く方法
#08_画面遷移
#09_リテラル文字の対応
#10_引数のある画面遷移
#11_パラメータのリテラル文字対応
#12_メッセージBoxを表示する方法
#13_デバイスごとに処理を切り替える方法