前回はNavigationService.NavigateAsync(“PageBView”);と記述することで,ViewModelからでもPgeBViewページに画面遷移できることを確認しました。ただ,”PageBView”というコーディングは,単純な文字列の為,少しバグの混入が気になります。要するに,PageBViewというクラスの名前を変更しても,文字列の為コンパイルエラーにならないので,変更漏れが発生しやすくなります。コンパイルが通ってしまうという事は,実行時にエラーになるため,不具合の混入に気付かずにリリースしてしまうという事です。その場合はクレーム等の問題になるため,何とか避けたいことです。今回はこのリテラル文字を取り除く方法を確認していきます。
リテラル文字を取り除く方法
リテラル文字を取り除くには「nameof」を使います。変更は次のように行います。
private void PageBShow() { NavigationService.NavigateAsync(nameof(PageBView)); }
MainPageViewModel.cs の最初のusingに「using BlankApp1.Views;」を追加します。 これで,PageBviewという文字列を記述したのと同じ効果が得られますが,PageBviewのクラス名が変更されても追従してコンパイルエラーになるので,確実にバグの混入を防ぐことができます。