Wann wird NavigationService initialisiert?

Ich möchte das NavigationService.Navigating-Ereignis von meiner Seite abfangen, um zu verhindern, dass der Benutzer vorwärts navigiert. Ich habe so einen Eventhandler definiert:

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

... und das funktioniert gut. Ich bin mir jedoch nicht sicher, wo genau ich diesen Code platzieren soll:

NavigationService.Navigating += PreventForwardNavigation;

Wenn ich es in den Konstruktor der Seite oder den initialisierten Ereignishandler platziere, ist NavigationService immer noch null und ich erhalte eine NullReferenceException. Wenn ich es jedoch in die Loaded-Ereignisbehandlungsroutine für die Seite lege, wird es jedes Mal aufgerufen, wenn die Seite aufgerufen wird. Wenn ich richtig verstehe, bedeutet das, dass ich dasselbe Ereignis mehrere Male bearbeite.

Möchte ich den gleichen Handler mehrmals zum Ereignis hinzufügen (wie wäre es, wenn ich das Loaded-Ereignis der Seite verwenden würde, um es zu verknüpfen)? Wenn nicht, gibt es einen Platz zwischen Initialized und Loaded, an dem ich diese Verkabelung vornehmen kann?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage