【问题标题】:detect navigationwindow go back event检测导航窗口返回事件
【发布时间】:2012-07-25 16:31:15
【问题描述】:

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

【问题讨论】:

    标签: c# wpf navigationwindow


    【解决方案1】:

    将处理程序添加到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
        }
    }
    

    附:您需要注册导航服务。在我的代码中,它不适用于页面构造函数,因为导航服务仍然为空。所以我在 XAML 页面标签中添加了 Loaded="page_Loaded" 并将其分配到那里:

    bool _navigationServiceAssigned = false;
    private void page_Loaded(object sender, RoutedEventArgs e)
    {
        if (_navigationServiceAssigned == false)
        {
            NavigationService.Navigating += NavigationService_Navigating;
            _navigationServiceAssigned = true;
        }
    }
    

    NavigatingCancelEventArgs 包含有关导航请求的所有信息,您需要管理页面状态。

    【讨论】:

      【解决方案2】:

      NavigationService 提供了许多您可以订阅的事件,如果您想控制导航过程:

      • 正在导航,当框架即将导航时。将取消设置为真 停下来。
      • 已导航,当导航完成但未完成之前 渲染
      • 出现问题时导航失败
      • NavigationProgress,当远程导航调用的块正在 下载。
      • NavigationStopped,当调用 StopLoading 方法时 或在下载过程中发出新的导航请求
      • Lo​​adCompleted,当页面被渲染时

      【讨论】:

      • 如何检测返回按钮事件?
      • 事件参数有一个可以使用的NavigationMode 属性。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-29
      • 2018-08-06
      • 1970-01-01
      • 1970-01-01
      • 2023-03-16
      • 2013-05-18
      相关资源
      最近更新 更多