История NavigationWindow не сохраняет состояния должным образом
У меня есть NavigationWindow (window1) и пользовательское состояние навигации.
То, что я сейчас использую для навигации, таково:
- функция (navigate (string, bool)), которая берет местоположение (URL), к которому я хочу перейти, плюс логическое значение, которое определяет, должен ли я сделать запись Back (то есть я вошел в папку)
- Отдельная функция, которая связана с моим NavigationService (позволяет мне переходить назад / вперед в моей истории)
Моя проблема заключается в том, что когда я возвращаюсь назад, я начинаю переопределять свою историю!
Вот мой NavigationService_Navigating(...) (который вызывается, когда я нажимаю кнопку вперед / назад)
void NavigationService_Navigating(object sender, NavigatingCancelEventArgs e)
{
try // If something goes wrong, just bail.
{
// If we're going backwards, we want to remember the current location.
if (e.NavigationMode == NavigationMode.Back) { e.ContentStateToSave = new GopherNavState(cLocation); }
// use our internal navigation to move to the location, but dont create a back entry.
navigate((e.TargetContentState as GopherNavState).tLocation, false);
}
catch
{ } // ...
}
проблема возникает споратически. Я создам 3/4 записи в моей спине, вернусь и посмотрю, что моя история заполнена страницей, которую я сейчас просматриваю.
Я попробовал все, но я все еще не могу понять это правильно.
1 ответ
Я нашел источник моей душевной боли: меню истории. Оказывается, тот факт, что я использовал хром из NavigationWindow, вызывал у меня головную боль.
Чтобы это исправить, я просто отключил навигационные элементы управления в окне и сделал свои собственные (кнопки, которые имеют команды BrowseBack и BrowseForward).