2015-11-04 8 views
0

Привет Я работаю над локализацией. У меня есть список. Если я изменяю язык в списке. Все приложение должно быть изменено на этот язык (включая текущую страницу).Windows Phone 8.1 Обновить/Обновить страницу Локализация

Так я получается, что язык из выпадающего списка и назначен

Windows.Globalization.ApplicationLanguages.PrimaryLanguageOverride = cul; 

Вопрос 1: Я хочу, чтобы перезагрузить/обновить текущую страницу (Ex: Page1)?

private void LocList_SelectedIndexChanged(object sender, SelectionChangedEventArgs e) 
{ 
    Windows.Globalization.ApplicationLanguages.PrimaryLanguageOverride = cul; 
    var resourceContext = Windows.ApplicationModel.Resources.Core.ResourceContext.GetForCurrentView(); 
    resourceContext.Reset(); 
} 

Это не работает. Я также попытался

private void LocList_SelectedIndexChanged(object sender, SelectionChangedEventArgs e) 
{ 
    Windows.Globalization.ApplicationLanguages.PrimaryLanguageOverride = cul; 
    var manager = Windows.ApplicationModel.Resources.Core.ResourceManager.Current; 
    manager.DefaultContext.QualifierValues.MapChanged += QualifierValues_MapChanged; 
} 

private void QualifierValues_MapChanged(IObservableMap<string, string> sender, IMapChangedEventArgs<string> @event) 
{ 
    ResourceContext.ResetGlobalQualifierValues(); 
    //ResourceManager.Current.DefaultContext.Reset(); 
} 

Вопрос 2: Если я перейти от Page1 к Page2, измененный язык применяется в page2. Но если я вернусь к Page1, изменение языка не будет применено.

Вопрос 2 (Продолжение): Я имею в виду, если я перехожу из Page2 в страницу Page1. Конструктор Page1 не попадает (если конструктор запущен, то инициализация страницы будет иметь правильный вывод).

Направляйте меня, если я делаю неправильно.

+0

Thanks Verdolino – user2115618

ответ

0

Спасибо людям. Я получил выход. Проблема: для кеша установлено значение Обязательный. Теперь, чтобы исправить это, я отключил кеш

this.NavigationCacheMode = NavigationCacheMode.Disabled; 

Ранее это был NavigationCacheMode.Required. Это исправление Вопрос 2

сейчас Для Вопрос 1: Этот код сделал мою страницу, чтобы обновить

var _Frame = Window.Current.Content as Frame; 
     _Frame.Navigate(_Frame.Content.GetType()); 
     _Frame.GoBack(); // remove from BackStack 
+0

Может ли кто-нибудь сказать, что это хороший подход – user2115618

+0

В 1 сообщении я нашел public bool Reload() {return Reload (null); } private bool Reload (объект param) { Тип type = this.Frame.CurrentSourcePageType; если (это.Frame.BackStack.Any()) { type = этот.Frame.BackStack.Last(). SourcePageType; param = this.Frame.BackStack.Last(). Параметр; } try {return this.Frame.Navigate (type, param); } наконец {это.Frame.BackStack.Remove (это.Frame.BackStack.Last()); } } Часть кода. это я получил ошибку (т.е.) ** Last() ** и ** Any() ** выдавал ошибку. – user2115618

0

объявлений. 1 Попытайтесь изменить тип события на SelectionChanged в своем списке i.e из LocList_SelectedIndexChanged в LocList_SelectionChanged.

Объявление. 2 Не уверен, но какую версию WP8.1 вы используете (silverlight?/Win-rt?), На обоих разные варианты навигации. Но как быстрое предложение (предположим, что версия win-rt) не использует метод GoBack(), но пытайтесь перезагрузить язык не в конструкторе, а в методе OnNavigatedTo().

В любом случае попробуйте ввести больше кода.

Удачи.

+0

Я использую Win-rt. 1 сомнение. Если я не использовал GoBack(). Я получаю 1 вопрос. Теперь я иду с Страница1-> Page2. Измените язык (здесь обновляется страница SO). теперь я хочу сделать Page2-> Page1.Здесь в соответствии со стеком. Page2 будет перенаправлен снова вместо Page1 – user2115618