Impedir que o quadro WPF armazenasse a história na pilha
-
21-09-2019 - |
Pergunta
Parece que seria uma solução fácil, mas estou perdendo muito tempo tentando descobrir isso. Talvez eu esteja projetando meu aplicativo incorretamente (o que pode ser o caso); portanto, me ajude se você tiver uma solução melhor.
Estou projetando um aplicativo WPF de nível corporativo que se parece muito com o Outlook com um Ribbon
em vez de uma barra de ferramentas. Eu tenho muitos módulos diferentes que são carregados em um quadro quando o usuário clica em um RibbonButton
. Lembre -se de que sua fita é compartilhada, acumula todos os módulos.
Então, eu tenho uma concha com uma fita e um quadro. Quando o usuário clica no botão Ribbon, ele carrega o módulo apropriado (UserControl) no quadro. Tudo está bem. No entanto, se eu navegar para outro módulo (clicando em outro fibonbutton) e depois clique no original RibbonButton
, Agora tenho duas instâncias do mesmo módulo aberto ... mas apenas um é mostrado no quadro ... o outro módulo está na pilha do quadro.
Então, minha pergunta é: como digo ao quadro para fechar o UserControl quando navego para um módulo diferente? Eu tentei definir o JournalEntry.KeepAlive="False"
, mas isso ainda não funcionou. Alguma ideia? Realmente não há muito código para postar, mas posso fazê -lo se isso o ajudar.
Solução
Se você nunca pretende voltar para a entrada anterior, você pode usar Navigationservice.removebackentry () Para limpar a história cada vez que você navega. A maneira mais fácil de fazer isso é lidar com o quadro Evento navegado:
frame.Navigated += frame_Navigated;
void frame_Navigated(object sender, NavigationEventArgs e)
{
frame.NavigationService.RemoveBackEntry();
}