繁体   English   中英

检测导航窗口返回事件

[英]detect navigationwindow go back event

如何确定何时按下导航窗口后退按钮并将该事件捕获到额外的东西。 我正在考虑管理页面状态。

将处理程序添加到NavigationWindow.NavigatingNavigationService.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包含管理页面状态所需的有关导航请求的所有信息。

NavigationService提供了一些你可以订阅的事件,如果你想控制导航过程:

  • 导航,当框架即将导航时。 将 Cancel 设置为 true 以停止。
  • 已导航,当导航完成但在呈现之前
  • NavigationFailed,当出现问题时
  • NavigationProgress,当正在下载远程导航调用的块时。
  • NavigationStopped,当调用 StopLoading 方法或下载过程中有新的 Navigate 请求时
  • LoadCompleted,当页面已经呈现

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM