繁体   English   中英

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

[英]Send Parameters using Frame.Navigate in 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; 
        }
    }
}

接受参数的第一页

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


    }
}

如何获取存储在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)
        {

        }
    }

}

假设如何工作,MainPage接收3个条目,存储在methC中并从BlankPage获取显示tb1,tb2,tb3。 我该如何使这东西工作?

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

您可以使用以下Navigate函数重载来传递对象:

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

在BlankPage1中覆盖OnNavigatedTo:

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

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

     base.OnNavigatedTo(e);
 }

这是从MSDN

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

 public static methC Data { get; set; } 

 public BlankPage1()
 {
      mylabel.Text = Data.X;
      , ....
 } 

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

        methC mc = new methC(tb1.Text, tb2.Text, tb3.Text);
        BlankPage1.Data = mc;
        Frame.Navigate(typeof(BlankPage1));

在主页上,您可以直接传递类对象的参数。

methC mc = new methC(tb1.Text, tb2.Text, tb3.Text);
Frame.Navigate(typeof(BlankPage1), mc);

在下一页中,您可以将其作为类对象接收

protected override void OnNavigatedTo(NavigationEventArgs e) {
        navigationHelper.OnNavigatedTo(e);
        methC item = e.Parameter as methC;
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM