Когда инициализируется NavigationService?

Я хочу перехватить событие NavigationService.Navigating на моей странице, чтобы предотвратить переход пользователя вперед. У меня есть обработчик событий, определенный таким образом:

void PreventForwardNavigation(object sender, NavigatingCancelEventArgs e)
{
    if (e.NavigationMode == NavigationMode.Forward)
    {
        e.Cancel = true;
    }
}

... и это прекрасно работает. Тем не менее, я не уверен, где именно разместить этот код:

NavigationService.Navigating += PreventForwardNavigation;

Если я помещу его в конструктор страницы или в инициализированный обработчик события, то NavigationService по-прежнему будет нулевым, и я получу исключение NullReferenceException. Однако, если я помещаю его в обработчик событий Loaded для страницы, он вызывается каждый раз при переходе на страницу. Если я правильно понимаю, это означает, что я обрабатываю одно и то же событие несколько раз.

Могу ли я добавить один и тот же обработчик в событие несколько раз (как это случилось бы, если бы я использовал событие Loaded страницы, чтобы подключить его)? Если нет, есть ли место между Initialized и Loaded, где я могу выполнить эту проводку?

Ответы на вопрос(2)

Ваш ответ на вопрос