Вопрос

Кажется, что это было бы простым решением, но я трачу слишком много времени, пытаясь разобраться в этом.Возможно, я неправильно разрабатываю свое приложение (что может быть так), поэтому, пожалуйста, помогите мне, если у вас есть лучшее решение.

Я разрабатываю приложение WPF корпоративного уровня, которое очень похоже на Outlook с Ribbon вместо панели инструментов.У меня есть много различных модулей, которые загружаются во фрейм, когда пользователь нажимает на RibbonButton.Имейте в виду, что его лента является общей для всех модулей.

Итак, у меня есть оболочка с лентой и рамкой.Когда пользователь нажимает на кнопку Ленты, он загружает соответствующий модуль (usercontrol) во фрейм.Все хорошо.Однако, если я перейду к другому модулю (нажав на другую RibbonButton), а затем нажму на оригинал RibbonButton, Теперь у меня открыты два экземпляра одного и того же модуля...но в кадре показан только один из них...другой модуль находится в стеке фрейма.

Итак, мой вопрос в том, как мне сообщить фрейму закрыть usercontrol при переходе к другому модулю?Я пробовал устанавливать JournalEntry.KeepAlive="False", но это все равно не сработало.Есть какие-нибудь мысли?На самом деле не так много кода для публикации, но я могу это сделать, если это поможет вам.

Это было полезно?

Решение

Если вы никогда не собираетесь "возвращаться" к предыдущей записи, вы можете использовать NavigationService.Удалить Backentry() чтобы очищать историю при каждом перемещении.Самый простой способ сделать это - обработать фрейм Управляемое событие:

frame.Navigated += frame_Navigated;

void frame_Navigated(object sender, NavigationEventArgs e)
{
    frame.NavigationService.RemoveBackEntry();
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top