Pregunta

Esto parece que sería una solución fácil, pero estoy perder demasiado tiempo tratando de resolver esto. Tal vez estoy diseñando mi solicitud de forma incorrecta (que podría ser el caso), así que por favor me ayude a cabo si tiene una solución mejor.

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

Así que tengo una concha con una cinta y un marco. Cuando el usuario hace clic en el botón de la cinta, se carga el módulo adecuado (usercontrol) en el marco. Todo es bueno. Sin embargo, si navego a otro módulo (haciendo clic en otra RibbonButton), y luego haga clic en el RibbonButton original, ahora tengo dos instancias del mismo módulo abierto ... pero sólo uno se muestra en el marco de la otra ... módulo está en la pila del marco.

Así que mi pregunta es, ¿cómo le digo al marco para cerrar el usercontrol cuando navego a un módulo diferente? He tratado de establecer la JournalEntry.KeepAlive="False", pero que todavía no ha funcionado. ¿Alguna idea? En realidad no hay mucho código para publicar, pero puede hacerlo si se le ayudará.

¿Fue útil?

Solución

Si nunca la intención de "volver" a la entrada anterior, puede utilizar NavigationService.RemoveBackEntry () para borrar la historia cada vez que navegar. La forma más sencilla de hacerlo es manejar del marco evento navegado :

frame.Navigated += frame_Navigated;

void frame_Navigated(object sender, NavigationEventArgs e)
{
    frame.NavigationService.RemoveBackEntry();
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top