MainPage.xaml.cs 的模板代码包含此方法(正文代码是我的)。
/// <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. The Parameter
/// property is typically used to configure the page.</param>
protected override void OnNavigatedTo(NavigationEventArgs e)
{
var queryParams = e.Parameter as WhitepagesQueryParams;
}
请注意注释清楚地表明应该使用 e.Parameter 来设置页面。
当用户正在查看另一个应用程序页面并单击“后退”按钮时,我有什么机会/在哪里提供将出现在 e.Parameter 中的值?
我的第一个想法是这个
protected override void OnNavigatedFrom(NavigationEventArgs e)
{
e.Parameter = this.DefaultViewModel["QueryParameters"];
base.OnNavigatedFrom(e);
}
但 e.Parameter 是只读的。
有一种方法
private void GoBack(object sender, RoutedEventArgs e)
{
}
单击“后退”按钮时会调用它,但它似乎没有执行实际的导航,而且我再次看不到如何提供值。
当我尝试使用 Silverlight 时,我曾经维护本质上属于应用程序的 ViewModel。这通过使状态变得不必要来解决传递状态的问题,但是如果我这样做,那么 e.Parameter 的意义何在?
我突然想到,这种方法(app 对象拥有的状态模型)也提供了一个机会来回避隐式序列化的缺点,隐式序列化目前只能序列化简单的值。