Quando o NavigationService é inicializado?
Quero capturar o evento NavigationService.Navigating da minha página, para impedir que o usuário navegue para frente. Eu tenho um manipulador de eventos definido assim:
void PreventForwardNavigation(object sender, NavigatingCancelEventArgs e)
{
if (e.NavigationMode == NavigationMode.Forward)
{
e.Cancel = true;
}
}
... e isso funciona bem. No entanto, não tenho certeza exatamente onde colocar esse código:
NavigationService.Navigating += PreventForwardNavigation;
Se eu colocá-lo no construtor da página ou no manipulador de eventos inicializado, o NavigationService ainda é nulo e recebo uma NullReferenceException. No entanto, se eu o colocar no manipulador de eventos Loaded da página, ele será chamado toda vez que a página for navegada. Se eu entendi direito, isso significa que estou lidando com o mesmo evento várias vezes.
Posso adicionar o mesmo manipulador ao evento várias vezes (como aconteceria se eu usasse o evento Loaded da página para conectá-lo)? Caso contrário, existe algum lugar entre Inicializado e Carregado onde eu posso fazer essa fiação?