Отправка параметров с использованием Frame.Navigate в UWP - PullRequest
0 голосов
/ 10 октября 2018

Класс для временного хранения моего входного значения здесь.

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.Как я могу заставить эту вещь работать?

Ответы [ 2 ]

0 голосов
/ 10 октября 2018

На вашей главной странице вы можете напрямую передать параметр объекта класса.

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;
    }
0 голосов
/ 10 октября 2018

Пока вы переходите на другую страницу с помощью параметра Type, вы не можете использовать конструктор для передачи данных.поэтому Microsoft предоставила другой способ сделать эту работу.

Вы можете передать свой объект, используя следующую перегрузку функции навигации:

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

переопределить OnNavigatedTo в BlankPage1:

 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));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...