在页面之间传递数据 (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”是页面的名称
我想做一些非常简单的事情(或者我认为简单的事情)。
基本上,我在我的 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”是页面的名称