【发布时间】:2012-07-25 16:31:15
【问题描述】:
如何确定何时按下导航窗口后退按钮并将该事件捕获为额外的事件。我正在考虑管理页面状态。
【问题讨论】:
标签: c# wpf navigationwindow
如何确定何时按下导航窗口后退按钮并将该事件捕获为额外的事件。我正在考虑管理页面状态。
【问题讨论】:
标签: c# wpf navigationwindow
将处理程序添加到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
}
}
附:您需要注册导航服务。在我的代码中,它不适用于页面构造函数,因为导航服务仍然为空。所以我在 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 包含有关导航请求的所有信息,您需要管理页面状态。
【讨论】:
NavigationService 提供了许多您可以订阅的事件,如果您想控制导航过程:
【讨论】:
NavigationMode 属性。