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对象拥有的状态模型)也提供了一个机会来回避隐式序列化的缺点,这种缺点目前只能序列化简单的值。