Подтвердить что ты не робот

Обновить страницу в приложении метро С#

Я разрабатываю приложение метро с использованием RTM и С# Windows (RT RT), я застрял в перезагрузке страницы, Может ли кто-нибудь объяснить мне, как перезагрузить страницу, не переходя на ту же страницу снова. Краткое описание: Я разрабатываю приложение для метро с поддержкой многоязычия. Когда пользователь выбирает язык, я переопределяю основной язык ниже кода

Windows.Globalization.ApplicationLanguages.PrimaryLanguageOverride = "de";

и перезагрузите страницу с помощью этого кода

this.Frame.Navigate(this.GetType());

Язык изменен на "de", но когда я нажимаю "Назад" на странице, он перемещается по той же странице, а не переходит на предыдущую страницу. Я что-то пропустил. Может кто-то, пожалуйста, объясняет мне, как это сделать. Спасибо заранее

4b9b3361

Ответ 1

Это обновит вашу страницу:

var _Frame = Window.Current.Content as Frame;
_Frame.Navigate(_Frame.Content.GetType());
_Frame.GoBack(); // remove from BackStack
  • Обработка OnNavigatingFrom() позволяет сохранить данные и состояние страницы.
  • Обработка OnNavigatingTo() позволяет загружать данные вашей страницы и состояние.

Как предостережение, мой образец не учитывает параметры страницы, вам может понадобиться. Кроме того, еще один оговорка, мой пример дважды загружает вашу страницу. Но GoBack() необходим для удаления новой записи из BackStack. В отличие от WP, Frame не имеет Refresh(). Кроме того, BackStack не имеет Remove().

UPDATE

Я больше не использую вышеуказанный подход. Я использую это:

public bool Reload() { return Reload(null); }
private bool Reload(object param)
{
    Type type = this.Frame.CurrentSourcePageType;
    if (this.Frame.BackStack.Any())
    {
        type = this.Frame.BackStack.Last().SourcePageType;
        param = this.Frame.BackStack.Last().Parameter;
    }
    try { return this.Frame.Navigate(type, param); }
    finally { this.Frame.BackStack.Remove(this.Frame.BackStack.Last()); }
}

Ответ 2

Я не уверен, что полностью понимаю, что вы пытаетесь сделать, так что это может быть неправильно.

Вызывая эту строку кода при обновлении страницы, вы создаете новый объект текущего типа и перемещаетесь к нему, поэтому это не сохраняет изменения, которые пользователь делает, находясь на текущей странице.

Используете ли вы какой-либо шаблон дизайна? Для таких вещей я использую MVVM (используя библиотеку света MVVM), которая реализует действительно классную навигационную службу, которая будет держать такие вещи под контролем.