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

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

  1. 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) でエラーになる場合があった。

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

スポンサーリンク
Rectangle大広告
Rectangle大広告

シェアする

  • このエントリーをはてなブックマークに追加

フォローする