wpf mvvm composite-application

Evite que la trama WPF almacene el historial en la pila



mvvm composite-application (1)

Parece que sería una solución fácil, pero estoy perdiendo demasiado tiempo tratando de resolver esto. Tal vez estoy diseñando mi aplicación incorrectamente (lo que podría ser el caso), así que por favor ayúdenme si tiene una mejor solución.

Estoy diseñando una aplicación WPF de nivel empresarial que se parece mucho a Outlook con una Ribbon de Ribbon lugar de una barra de herramientas. Tengo muchos módulos diferentes que se cargan en un marco cuando el usuario hace clic en RibbonButton . Tenga en cuenta que su cinta se comparte en todos los módulos.

Entonces tengo un caparazón con una cinta y un marco. Cuando el usuario hace clic en el botón Ribbon, carga el módulo adecuado (usercontrol) en el marco. Todo es bueno. Sin embargo, si navego a otro módulo (haciendo clic en otro RibbonButton), y luego hago clic en RibbonButton original, ahora tengo dos instancias del mismo módulo abierto ... pero solo una se muestra en el marco ... la otra módulo está en la pila del marco.

Entonces mi pregunta es, ¿cómo le digo al marco que cierre el control de usuario cuando navego a un módulo diferente? Intenté configurar el JournalEntry.KeepAlive="False" , pero todavía no funcionaba. ¿Alguna idea? Realmente no hay mucho código para publicar, pero puedo hacerlo si te sirve.


Si nunca tiene la intención de ir "atrás" a la entrada anterior, puede usar NavigationService.RemoveBackEntry () para borrar el historial cada vez que navega. La forma más fácil de hacerlo es manejar el evento Navegado del Marco:

frame.Navigated += frame_Navigated; void frame_Navigated(object sender, NavigationEventArgs e) { frame.NavigationService.RemoveBackEntry(); }