我想从我的页面中捕获 NavigationService.Navigating 事件,以防止用户向前导航。我有一个这样定义的事件处理程序:
void PreventForwardNavigation(object sender, NavigatingCancelEventArgs e)
{
if (e.NavigationMode == NavigationMode.Forward)
{
e.Cancel = true;
}
}
...而且效果很好。但是,我不确定该代码的确切位置:
NavigationService.Navigating += PreventForwardNavigation;
如果我将它放在页面的构造函数或 Initialized 事件处理程序中,那么 NavigationService 仍然为 null,并且我得到 NullReferenceException。但是,如果我将它放在页面的 Loaded 事件处理程序中,那么每次导航到页面时都会调用它。如果我理解正确,这意味着我要多次处理同一个事件。
我可以多次向事件添加相同的处理程序(如果我使用页面的 Loaded 事件来连接它会发生)?如果没有,在 Initialized 和 Loaded 之间是否有一些地方可以进行这种接线?