如何/在何处为后退导航提供e.Parameter

时间:2013-10-12 01:21:50

标签: c# windows-store-apps

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

0 个答案:

没有答案