在页面之间传递数据(获取/设置)

时间:2015-11-25 14:36:30

标签: c# xaml uwp

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

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

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

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

我正在试图找出最好的方法,但经过几个小时的搜索,我似乎无法弄清楚如何在页面之间传递多个值。我想我想创建一个存储所有这些信息的类文件,但是我不确定如何在第一页的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();
    }
}

}

1 个答案:

答案 0 :(得分:0)

你应该有一个MainPage,它可以在Frames中保存你的所有页面。

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

在MainPage上你有一个全局,它包含“this”和globals来存储各个页面的选择值。

public static MainPage Current;
public static string PageOneSelection;

获取/存储您的选择的功能:

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上创建另一个全局并执行相同的操作。

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

public void setAllPageOneSelections(string param1,string param2 /.../)    {      PageOneSelection =参数1;      PageOneSelection2 = param2的;    } 在你的主要你应该有一个页面切换功能。我用:

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

然后您可以使用播放按钮

MainPage.Current.changeToNextPage();