简体   繁体   English

使用 Frame.Navigate(typeof(Page2)) 在 c# windows 手机应用程序中传递多个参数

[英]Passing multiple parameters in c# windows phone app using Frame.Navigate(typeof(Page2))

I am creating a basic MCQ app where 2 MCQ's along with options are showed on a single page and the submit button shows the results on the second page in a textblock.我正在创建一个基本的 MCQ 应用程序,其中 2 个 MCQ 和选项显示在单个页面上,提交按钮在文本块的第二页上显示结果。

I am using Frame.Navigate(typeof(Page2)) method of navigation which can pass one parameter but, can't pass multiple parameters to the next page.我正在使用Frame.Navigate(typeof(Page2))导航方法,它可以传递一个参数但不能将多个参数传递到下一页。

Here is my code:这是我的代码:

    using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices.WindowsRuntime;
using Windows.Foundation;
using Windows.Foundation.Collections;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Data;
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Navigation;
using Windows.UI.Popups;
// The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=391641

namespace MCQ
{
    /// <summary>
    /// An empty page that can be used on its own or navigated to within a Frame.
    /// </summary>
    public sealed partial class MainPage : Page
    {

        public MainPage()
        {
            this.InitializeComponent();

            this.NavigationCacheMode = NavigationCacheMode.Required;
        }

        /// <summary>
        /// Invoked when this page is about to be displayed in a Frame.
        /// </summary>
        /// <param name="e">Event data that describes how this page was reached.
        /// This parameter is typically used to configure the page.</param>
        protected override void OnNavigatedTo(NavigationEventArgs e)
        {
            // TODO: Prepare page for display here.

            // TODO: If your application contains multiple pages, ensure that you are
            // handling the hardware Back button by registering for the
            // Windows.Phone.UI.Input.HardwareButtons.BackPressed event.
            // If you are using the NavigationHelper provided by some templates,
            // this event is handled for you.
        }


        private void button_Click(object sender, RoutedEventArgs e)
        {




            string ans1 = "";
            string ans2 = "";
            if (radioButton.IsChecked == true)
            {
                ans1 = "Answer 1 is correct";

            }
            else
            {
                ans1 = "Answer 1 is incorrect";
            }
            if (radioButton2.IsChecked == true)
            {
                ans2 = "Answer 2 is correct";

            }
            else
            {
                ans2 = "Answer 2 is incorrect";
            }


            Frame.Navigate(typeof(Page2), ans1, ans2);

            //textBlock3.Text = ans1 + " & " + ans2; ;

        }

        private void button1_Click(object sender, RoutedEventArgs e)
        {


        }
    }
}

I get the error cannot convert from string to windows.ui.xaml.media.我得到错误无法从字符串转换为 windows.ui.xaml.media。 navigation.transitioninfo on the second parameter ie ans2. navigation.transitioninfo 关于第二个参数,即 ans2。

Any help would be appreciated or an alternate way to pass parameters to next page.任何帮助或将参数传递到下一页的替代方法将不胜感激。 THanks!谢谢!

Create a new class with 2 properties and set the properties to the text block values. 创建一个包含2个属性的新类,并将属性设置为文本块值。 Then you pass this object when you navigate. 然后在导航时传递此对象。

Create the payload class: 创建有效负载类:

public class Payload
{
 public string ans1 { get;set;}
 public string ans2 { get;set;}
}

Then populate the payload class: 然后填充有效负载类:

Payload payload = new Payload();
payload.ans1 = textblock1.Text;
payload.ans2 = textblock2.Text;

Then when you call Navigate pass your instance of payload like this: 然后,当您调用Navigate时,传递您的有效负载实例,如下所示:

this.Frame.Navigate(typeof(SecondPage),payload);

It was server error due to mod security.由于 mod 安全性,这是服务器错误。 It got solved.它得到了解决。 Thank you guys感谢你们

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

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