在 Silverlight 中导航到页面时,您可以覆盖此方法。
protected override void OnNavigatedTo(NavigationEventArgs e)
{
base.OnNavigatedTo(e);
}
有NavigationEventArgs
一个NavigationMode
枚举,定义为
public enum NavigationMode
{
New = 0,
Back = 1,
Forward = 2,
Refresh = 3,
}
但是调用e.NavigationMode
总是抛出一个NotImplementedException
是否有一种方法可以在silverlight 中检测到正在导航到的页面,因为用户点击了前进/后退浏览器按钮。
我想要实现的是用户点击后退按钮时可以保留的某种状态。
例如,假设您有一个客户页面,它在数据网格中显示客户列表。用户可以选择一个客户,并且有一个详细视图显示该客户的所有订单。现在,在一个订单项目中,您可以单击一个超链接链接,该链接将您带到该订单的运输历史记录,这是一个单独的页面。当用户点击后退按钮时,我想返回客户页面并自动选择他正在查看的客户。这可能吗?
我还尝试了片段导航功能
NavigationService.Navigate(new Uri("#currentcustomerid="
+ customer.Id.ToString(), UriKind.Relative));
当客户选择发生变化,但是当用户点击客户页面上的各种客户时,这会将太多项目添加到历史记录中。
编辑
还有一种方法可以覆盖
protected override void OnNavigatingFrom(NavigatingCancelEventArgs e)
{
}
这与处理 NavigationService.Navigating 事件相同,如 BugFinder 的回答所示。当您点击后退或前进按钮时,此方法e.NavigationMode
总是返回。New
此方法唯一返回的时间Back
是您显式调用NavigationService.GoBack()