2017年5月11日木曜日

画面間でパラメータを渡す

UWPで画面間でパラメータを渡す方法を調べてみた。

  1. Navigateメソッドの引数で情報を渡す方法

    ・遷移元で Navigateメソッドの第二パラメータに渡す値を指定する。
    MainContentFrame.Navigate(typeof(MasterUpdate),"add");


    ・遷移先では、
    rotected 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) でエラーになる場合があった。


  2. 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();
    }

0 件のコメント:

コメントを投稿