2015-11-04 80 views
0

嗨我正在进行本地化。我有一个列表框。如果我更改列表框中的语言。整个应用程序必须更改为该语言(包括当前页面)。Windows Phone 8.1重新加载/刷新本地化页面

所以我获得从列表框中该语言并分配给

Windows.Globalization.ApplicationLanguages.PrimaryLanguageOverride = cul; 

问题1:我想重装/刷新当前页面(例如:第1页)?

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构造函数没有打(如果构造函数被击中,Page初始化将碰巧得到正确的输出)。

指导我,如果我做错了。

+0

谢谢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篇文章中,我发现公共bool Reload(){return Reload(null); } private bool重新加载(object param) {type = this.Frame.CurrentSourcePageType; (this.Frame.BackStack.Any()) {type = this.Frame.BackStack.Last()。SourcePageType; param = this.Frame.BackStack.Last()。Parameter; } 尝试{return this.Frame.Navigate(type,param); } finally {this.Frame.BackStack.Remove(this.Frame.BackStack.Last()); } }一段代码。这我得到错误(即)**最后()**和**任何()**错误。 – user2115618

0

广告。 1尝试将事件类型更改为您的列表框上的SelectionChanged,即从LocList_SelectedIndexChanged更改为LocList_SelectionChanged。

Ad。 2不确定,您使用的是WP8.1的哪个版本(silverlight?/ win-rt?),两者的导航都不相同。但作为一个快速的建议(假设win-rt版本)不要使用GoBack()方法,而是尝试重新加载语言,而不是在构造函数中,但在OnNavigatedTo()方法中。

无论如何,尝试提供更多的代码。

祝你好运。

+0

我正在使用Win-rt。 1怀疑。如果我没有使用GoBack()。我得到1个问题。现在我正在从第1页 - >第2页进行。更改语言(SO页面在此刷新)。现在我想做Page2-> Page1。这里根据堆栈Page2将被重新定向而不是Page1 – user2115618

相关问题