Как я могу перейти на ту же страницу и запустить нормальный жизненный цикл новой страницы?

Если вы находитесь на MyPage.xaml и вызываете Navigate(new Uri("MyPage.xaml", UriKind.Relative)); Ничего не произошло.

Как заставить его действительно перезагружать страницу?


person Tristan Warner-Smith    schedule 05.11.2011    source источник
comment
Я задал этот вопрос, чтобы он существовал как ресурс в Интернете, но я не могу ответить на свой вопрос, поэтому ответ заключается в том, чтобы убедиться, что вы нажимаете уникальный URL-адрес. Вы можете сделать это, просто добавив что-то уникальное в строку запроса NavigationService.Navigate(new Uri(string.Format(/MyPage.xaml?random={0}, Guid.NewGuid()), UriKind.RelativeOrAbsolute)); Например   -  person Tristan Warner-Smith    schedule 05.11.2011
comment
Мне нравится ваш так называемый хак как решение. Вам не нужно возиться с возвратом состояния к нулю и поднятием кучи измененных свойств. Вы также можете удалить текущую запись страницы из стопки при переходе, чтобы ваша стопка не содержала одну и ту же страницу дважды. На мой взгляд, хак идеальный.   -  person Josh Close    schedule 24.11.2011


Ответы (1)


Вы уже сказали быстрый и грязный способ вызвать обновление страницы. Но мне кажется, что вам это может и не понадобиться. Обновление данных с помощью привязки данных Silverlight и изменения свойств, а также модели MVVM для вашей страницы кажется гораздо более подходящим. Но не зная варианта использования, трудно сказать

Другое дело, не испортит ли стек переход на новую страницу, которая является той же самой страницей? Вы можете столкнуться с ситуацией, когда пользователю необходимо вернуться назад на большое количество страниц.

person Firedragon    schedule 06.11.2011
comment
Согласитесь, это определенно грязный хак, и да, вам придется вытащить задний стек. «Лучший» способ сделать это, безусловно, обновить модели для страницы. В моем конкретном случае это игровая страница SL-XNA, на которой много кода инициализации, и, безусловно, самый простой способ перезапустить игру здесь — вернуться на страницу. - person Tristan Warner-Smith; 06.11.2011