2010-02-17 14 views
7

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.Evitar que WPF Frame guarde el historial en la pila

Estoy diseñando una aplicación WPF de nivel empresarial que se parece mucho a Outlook con un Ribbon en 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.

Así que 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 el RibbonButton original, ahora tengo dos instancias del mismo módulo abierto ... pero solo se muestra uno en el marco ... el otro módulo está en la pila del marco.

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

Respuesta

9

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 sencilla de hacerlo es manejar de Navigated event del marco:

frame.Navigated += frame_Navigated; 

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

¿Qué pasa si tengo que hacerlo sólo para una sola de navegación? –

Cuestiones relacionadas