Question

Cela semble que ce serait une solution facile, mais je perdre trop de temps à essayer de comprendre. Peut-être que je suis la conception de manière incorrecte ma demande (ce qui pourrait être le cas), alors s'il vous plaît, aidez-moi si vous avez une meilleure solution.

Je suis la conception d'une application WPF de niveau d'entreprise qui ressemble beaucoup à Outlook avec un Ribbon au lieu d'une barre d'outils. J'ai beaucoup de différents modules qui sont chargés dans un cadre lorsque l'utilisateur clique sur un RibbonButton. Gardez à l'esprit que son ruban est partagé accross tous les modules.

J'ai donc une coquille avec un ruban et un cadre. Lorsque l'utilisateur clique sur le bouton de ruban, il charge le module approprié (usercontrol) dans le cadre. Tout est bon. Cependant, si je navigue à un autre module (en cliquant sur un autre RibbonButton), puis cliquez sur le RibbonButton original, j'ai maintenant deux instances du même module ouvert ... mais une seule est représentée dans le cadre ... l'autre le module se trouve dans la pile du cadre.

Alors, ma question est, comment je dis le cadre de fermer le usercontrol lorsque je navigue à un module différent? J'ai essayé d'installer le JournalEntry.KeepAlive="False", mais ne fonctionnait toujours pas. Des pensées? Il n'y a vraiment pas beaucoup de code pour écrire, mais je peux le faire si cela vous aidera.

Était-ce utile?

La solution

Si vous ne l'intention d'aller « retour » à l'entrée précédente, vous pouvez utiliser NavigationService.RemoveBackEntry () pour effacer l'histoire à chaque fois que vous naviguez. La meilleure façon de le faire est de gérer le cadre de événement vous pouvez naviguer:

frame.Navigated += frame_Navigated;

void frame_Navigated(object sender, NavigationEventArgs e)
{
    frame.NavigationService.RemoveBackEntry();
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top