UWPで画面間でパラメータを渡す方法を調べてみた。
- Navigateメソッドの引数で情報を渡す方法
・遷移元で Navigateメソッドの第二パラメータに渡す値を指定する。
MainContentFrame.Navigate(typeof(MasterUpdate),"add");
・遷移先では、
protected override async void OnNavigatedTo(NavigationEventArgs e) { string param = (string)e.Parameter; PageStackEntry previousPage = Frame.BackStack.Last(); Type previousPageType = previousPage?.SourcePageType; base.OnNavigatedTo(e); MessageDialog dialog = new MessageDialog(param); await dialog.ShowAsync(); }
参考にした coelacanthさんの記事には、ハイライトにした2行は入っていなかったが、この2行がないと base.OnNavigatedTo(e) でエラーになる場合があった。
- staticな変数に値を持たせる方法
・パラメータを保持するクラスを準備する。class StaticParam { public static string upd_Mode; public static int upd_Code; }
・遷移元で staticな変数に値を代入する。
StaticParam.upd_Mode = "add"; StaticParam.upd_Code = 100; MainContentFrame.Navigate(typeof(MasterUpdate));
・遷移先では staticな変数から値を取り出す。
protected override async void OnNavigatedTo(NavigationEventArgs e) { string typ = StaticParam.upd_Mode; int cd = StaticParam.upd_Code; base.OnNavigatedTo(e); MessageDialog dialog = new MessageDialog(typ + " code = " + cd.ToString()); await dialog.ShowAsync(); }