在 UWP 中使用 Frame.Navigate 发送参数

-1 c# uwp

一个在这里临时存储我的输入值的类。

namespace App2
{
    class methC
    {
        public string tb1 { get; set; }
        public string tb2 { get; set; }
        public string tb3 { get; set; }
        public string tb4 { get; set; }
        public string tb5 { get; set; }
        public string tb6 { get; set; }

        public methC(string tb1, string tb2, string tb3)
        {
            this.tb1 = tb1;
            this.tb2 = tb2;
            this.tb3 = tb3;
            //this.right1 = right1;
            //this.right2 = right2;
            //this.right3 = right3;
            //this.Box = Box;
            //this.Grade = Grade; 
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

接收参数的第一页

namespace App2
{
    public sealed partial class MainPage : Page
    {
        public MainPage()
        {
            this.InitializeComponent();
        }

        private void btn1_Click(object sender, RoutedEventArgs e)
        {
            methC mc = new methC(tb1.Text, tb2.Text, tb3.Text);
            Frame.Navigate(typeof(BlankPage1));
        }


    }
}
Run Code Online (Sandbox Code Playgroud)

如何让存储在tb1、tb2、tb3中的数据显示在BlankPage1中?

namespace App2
{
    public sealed partial class BlankPage1 : Page
    {
        public BlankPage1()
        {
            this.InitializeComponent();


        }

        private void btn2_Click(object sender, RoutedEventArgs e)
        {

            string four, five, six;
            four = tb4.Text;
            five = tb5.Text;
            six = tb6.Text;
            box.Text = four + five + six;
        }

        private void TextBlock_SelectionChanged(object sender, RoutedEventArgs e)
        {

        }
    }

}
Run Code Online (Sandbox Code Playgroud)

假设如何工作,MainPage 接收 3 个条目,存储在 methC 中并从 BlankPage 获取以显示 tb1、tb2、tb3。我怎样才能让这件事起作用?

Rez*_*oei 6

只要您使用Type参数导航到另一个页面,就不能使用构造函数来传递数据。所以微软提供了另一种方式来完成这项工作。

您可以使用此 Navigate 函数的重载传递您的对象:

        methC mc = new methC(tb1.Text, tb2.Text, tb3.Text);
        string Param = JsonConvert.SerializeObject(mc);
        Frame.Navigate(typeof(BlankPage1), Param);
Run Code Online (Sandbox Code Playgroud)

在 BlankPage1 中覆盖 OnNavigatedTo:

 protected override void OnNavigatedTo(NavigationEventArgs e)
 {
     methC myData = JsonConvert.DeserializeObject<methC>((string)e.Parameter);

     Labelx.Text = myData.x;
     , ....

     base.OnNavigatedTo(e);
 }
Run Code Online (Sandbox Code Playgroud)

这是来自MSDN

最坏的情况是通过静态成员分配它们,因此您可以在 BlankPage1 类中添加:

 public static methC Data { get; set; } 

 public BlankPage1()
 {
      mylabel.Text = Data.X;
      , ....
 } 
Run Code Online (Sandbox Code Playgroud)

您可以在导航之前分配值:

        methC mc = new methC(tb1.Text, tb2.Text, tb3.Text);
        BlankPage1.Data = mc;
        Frame.Navigate(typeof(BlankPage1));
Run Code Online (Sandbox Code Playgroud)