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.

Foi útil?

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();
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top