如何确定何时按下导航窗口后退按钮并将该事件捕获到额外的东西。我正在考虑管理页面状态。
问问题
3016 次
2 回答
4
将处理程序添加到NavigationWindow.Navigating
或NavigationService.Navigating
。在您的处理程序中:
void NavigationService_Navigating(object sender, NavigatingCancelEventArgs e)
{
if (e.NavigationMode == NavigationMode.Back) {
e.Cancel = true;
// TODO: whatever state management you're going to do
}
}
Ps 您需要注册导航服务。在我的代码中,它不适用于页面构造函数,因为导航服务仍然为空。因此,我将 Loaded="page_Loaded" 添加到 XAML 页面标记并将其分配在那里:
bool _navigationServiceAssigned = false;
private void page_Loaded(object sender, RoutedEventArgs e)
{
if (_navigationServiceAssigned == false)
{
NavigationService.Navigating += NavigationService_Navigating;
_navigationServiceAssigned = true;
}
}
NavigatingCancelEventArgs
包含有关管理页面状态所需的导航请求的所有信息。
于 2012-07-25T16:41:03.083 回答
1
NavigationService
如果您想控制导航过程,提供了许多您可以订阅的事件:
- 导航,当框架即将导航时。将 Cancel 设置为 true 以停止。
- 导航,当导航完成但在呈现之前
- NavigationFailed,当出现问题时
- NavigationProgress,当正在下载远程导航调用的块时。
- NavigationStopped,当调用 StopLoading 方法或在下载过程中发出新的 Navigate 请求时
- LoadCompleted,当页面被渲染时
于 2012-07-25T16:36:26.337 回答