3

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

4

0 回答 0