C# 如何在页面之间传递参数

C# 如何在页面之间传递参数,c#,xaml,uwp,C#,Xaml,Uwp,我正在开发一个有两个页面的UWP应用程序,我想要在页面之间传递参数的最佳实践。 我还想不断重复地传递信息 以下场景的最佳方法是什么 例如,更改页面中的用户控件。 我们有两个页面,每个页面都打开并保持在屏幕的中间,每个页面上都有一个按钮,当我们点击另一个页面时,它会改变另一个页面的背景色 感谢您的帮助,您可以提供导航参数作为框架的第二个参数。导航方法: Frame.Navigate(typeof(SecondPage),"something"); 然后在第二页的OnNavigatedToover

我正在开发一个有两个页面的UWP应用程序,我想要在页面之间传递参数的最佳实践。 我还想不断重复地传递信息

以下场景的最佳方法是什么

例如,更改页面中的用户控件。 我们有两个页面,每个页面都打开并保持在屏幕的中间,每个页面上都有一个按钮,当我们点击另一个页面时,它会改变另一个页面的背景色


感谢您的帮助,

您可以提供导航参数作为
框架的第二个参数。导航方法:

Frame.Navigate(typeof(SecondPage),"something");
然后在第二页的
OnNavigatedTo
override中获取参数:

protected override void OnNavigatedTo(NavigationEventArgs e)
{
    var data = (string)e.Parameter; //"something"
    ...
}
建议重复的答案没有提到一个重要事实——参数只能是启用导航状态序列化的基本类型。正如文件所说:

要使用GetNavigationState启用帧状态序列化,必须仅为导航参数使用基本类型,如字符串、字符、数字和GUID类型。否则,GetNavigationState将在应用程序挂起时引发异常。如果不使用GetNavigationState,则该参数可以具有其他类型

即使不需要支持挂起和帧状态序列化,也最好使用简单的参数,并可能将日期存储在其他位置。同样来自文件:

如果不使用GetNavigationState,参数值可能具有复杂类型。但是,您仍应仅使用基本类型,以避免框架的导航堆栈包含对参数的引用而导致内存使用过多。首选方法是不传递实际对象,而是传递一个标识符,您可以使用该标识符在目标登录页中查找对象。例如,不传递Customer对象,而是传递对CustomerID的引用,然后在导航完成后查找Customer


如果我需要传递一个复杂的对象,我通常倾向于使用JSON序列化将其转换为
字符串
,然后在目标页面中进行反序列化。因此,您可以使用真棒。

的可能副本请帮助我,按照此帖子的可能副本,我希望每个页面都保持在屏幕中间。但是
Frame.Navigate(typeof(SecondPage),“something”)创建并打开新页面。我还想不断地传递信息,只有在导航过程中才能在页面之间传递参数。如果你想一次显示多个页面,你需要添加多个
Frame
控件-每个控件将承载不同的页面堆栈。请帮助我,跟随这篇文章