在页面之间传递数据 (get/set)

Passing data (get/set) between pages

我想做一些非常简单的事情(或者我认为简单的事情)。

基本上,我在我的 XAML/C# UWP 应用程序中设置了两个页面,第一个页面有一系列文本框和 select 选项(名称、状态等)的下拉菜单。

在底部有一个按钮可以转到下一页。

在下一页,我希望能够显示用户输入的数据。

我正在尝试找出执行此操作的最佳方法,但经过几个小时的搜索,我似乎无法弄清楚如何在页面之间传递多个值。我想我想创建一个 Class 文件来存储所有这些信息,但我不确定如何在第一页的 C# 代码中设置值并在第二页上获取信息。

更新:

所以使用下面的答案我得到了这里:

在主页上

public sealed partial class MainPage : Page
{

    public static  MainPage Current;
    public static string PageOneSelection
    {
        get; set;
    }

    public void changeToNextPage()
    {
        PageToLoad.Navigate(typeof(TwoPlayerGame));
    }

    public MainPage()
    {
        this.InitializeComponent();
        Current = this;
        PageToLoad.Navigate(typeof(Selection));          

     }

}

}

在选择页面上:

public sealed partial class Selection : Page
{


    new string Name;

    public Selection()
    {
        this.InitializeComponent();

    }
    private void PlayButton(object sender, TappedRoutedEventArgs e)
    {

        MainPage.Current.PageOneSelection = PlayerOneName.Text;
        MainPage.Current.changeToNextPage();
    }
}

}

您应该有一个 MainPage,它将所有页面保存在 Frames 中。

<Page x:Name="Main">
  <Frame x:Name="PageToLoad">
</Page>

在 MainPage 上,您有一个包含 "this" 的全局变量和用于存储您从各个页面选择的值的全局变量。

public static MainPage Current;
public static string PageOneSelection;

并根据 get/store 您的选择发挥作用:

public string getPageOneSelection()
{
   return PageOneSelection;
}

public void setPageOneSelection(string whatToSetItTo)
{
   PageOneSelection=whatToSetItTo;
}

初始化时

// This is a static public property that allows downstream pages to get a handle to the MainPage instance
// in order to call methods that are in this class.
Current = this; 

在初始化 MainPage 时,您应该加载第一页:

PageToLoad.Navigate(/*Your First Page*/);

现在,无论何时他们做出选择,您都可以来回调用 MainPage 来更改该选择值

//On Page 1
MainPage.Current.setPageOneSelection(theSelectedItem);

//On Page 2
itemFromPage1=MainPage.Current.getPageOneSelection();

更新:您的代码看起来不错。所以你说你有一个你想要信息的文本框。你可以这样做:

MainPage.Current.setPageOneSelection(textbox.Text);

我会在您导航到下一帧之前放置它。

如果您有第二个选择(即您的下拉菜单),请在您的 MainPage 上创建另一个全局选项并执行相同的操作。

此外,如果您可以一次发送多个字符串,请将参数添加到您的设置函数中:

public void setAllPageOneSelections(字符串参数 1, 字符串参数 2 /.../) { PageOneSelection=参数1; PageOneSelection2=参数2; } 在您的 Main 中,您可能应该有一个页面切换器功能。我使用:

public void changeToNextPage()
{
  PageToLoad.Navigate(/*Page 2 or next page or something */);
}

然后你可以为你的播放按钮做

MainPage.Current.changeToNextPage();

使用这个:- 定义这个变量:-

publicstatic mytextboxinfo {get;set;}

在你的函数中:-

submitbutton_Click(){
mytextboxinfo = mytextbox.text; 
}

然后在下一页:-

Page_loaded() {
mytextbox2.Text = myPage.mytextboxinfo;
}

其中“myPage”是页面的名称