2010-02-17 13 views
7

Dies scheint eine einfache Lösung zu sein, aber ich verschwende zu viel Zeit damit, das herauszufinden. Vielleicht entwerfe ich meine Anwendung falsch (was vielleicht der Fall ist), also bitte hilf mir, wenn du eine bessere Lösung hast.Verhindern, dass WPF Frame den Verlauf im Stack speichert

Ich entwerfe eine WPF-Anwendung auf Unternehmensebene, die mit einer statt einer Symbolleiste viel wie Outlook aussieht. Ich habe viele verschiedene Module, die in einen Rahmen geladen werden, wenn der Benutzer auf eine RibbonButton klickt. Denken Sie daran, dass sein Ribbon über alle Module verteilt ist.

Also habe ich eine Schale mit einem Band und einem Rahmen. Wenn der Benutzer auf die Schaltfläche "Ribbon" klickt, wird das entsprechende Modul (usercontrol) in den Frame geladen. Alles ist gut. Wenn ich jedoch zu einem anderen Modul navigiere (indem ich auf ein anderes RibbonButton klicke) und dann auf das Original RibbonButton klicke, habe ich jetzt zwei Instanzen desselben Moduls geöffnet ... aber nur eines wird im Rahmen angezeigt ... das andere Das Modul befindet sich im Stapel des Frames.

Also meine Frage ist, wie kann ich den Rahmen sagen, um die Benutzersteuerung zu schließen, wenn ich zu einem anderen Modul navigieren? Ich habe versucht, die JournalEntry.KeepAlive="False" Einstellung, aber das hat immer noch nicht funktioniert. Irgendwelche Gedanken? Es gibt wirklich nicht viel Code zum Posten, aber ich kann es tun, wenn es dir hilft.

Antwort

9

Wenn Sie nie vorhaben, zum vorherigen Eintrag zurückzugehen, können Sie den Verlauf bei jeder Navigation mit NavigationService.RemoveBackEntry() löschen. Der einfachste Weg, dies zu tun, ist die Navigated event:

+0

Was passiert, wenn ich es nur für eine einzige Navigation tun muss? –

Verwandte Themen