Запретить WPF Frame хранить историю в стеке
Похоже, это было бы простым решением, но я трачу слишком много времени, пытаясь понять это. Возможно, я неправильно проектирую свое приложение (что может быть так), поэтому, пожалуйста, помогите мне, если у вас есть лучшее решение.
Я разрабатываю приложение WPF корпоративного уровня, которое во многом похоже на Outlook с Ribbon
вместо панели инструментов. У меня есть много разных модулей, которые загружаются в кадр, когда пользователь нажимает на RibbonButton
, Имейте в виду, что его лента распределяется по всем модулям.
Так что у меня есть снаряд с лентой и рамой. Когда пользователь нажимает на кнопку ленты, он загружает соответствующий модуль (usercontrol) в кадр. Все хорошо. Тем не менее, если я перейду к другому модулю (нажав на другую кнопку RibbonButton), а затем нажмите на оригинал RibbonButton
Теперь у меня есть два открытых экземпляра одного и того же модуля... но только один показан в кадре... другой модуль находится в стеке кадра.
Итак, мой вопрос, как я могу сказать фрейму закрыть usercontrol при переходе к другому модулю? Я пытался установить JournalEntry.KeepAlive="False"
, но это все еще не сработало. Какие-нибудь мысли? На самом деле не так много кода для публикации, но я могу сделать это, если это поможет вам.
1 ответ
Если вы никогда не собираетесь возвращаться к предыдущей записи, вы можете использовать NavigationService.RemoveBackEntry(), чтобы очистить историю каждый раз, когда вы переходите. Самый простой способ сделать это - обработать событие Navigated фрейма:
frame.Navigated += frame_Navigated;
void frame_Navigated(object sender, NavigationEventArgs e)
{
frame.NavigationService.RemoveBackEntry();
}