您好我正致力于本地化。我有一个列表框。如果我在列表框中更改语言。整个应用程序必须更改为该语言(包括当前页面)。
所以我从列表框中获取了该语言并分配给
Windows.Globalization.ApplicationLanguages.PrimaryLanguageOverride = cul;
问题1:我想重新加载/刷新当前页面(例如: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 :(得分:0)
谢谢大家。我有输出。 问题是,缓存设置为Required。现在修复它我禁用了缓存
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
答案 1 :(得分:0)
广告。 1尝试将列表框中的事件类型更改为SelectionChanged,即从LocList_SelectedIndexChanged更改为LocList_SelectionChanged。
广告。 2不确定但是你使用的是哪个版本的WP8.1(silverlight?/ win-rt?),两者的导航都不同。但是作为一个快速的建议(假设win-rt版本)不使用GoBack()方法,但尝试重新加载语言不是在构造函数中而是在OnNavigatedTo()方法中。
无论如何都要尝试提供更多代码。
祝你好运。