改变UWP应用程序的语言是不稳定的

时间:2016-12-23 20:24:00

标签: localization uwp uap

我有以下代码来更改我的应用程序的语言,但事实证明它不可靠。我的应用程序由MainPage和一堆UserControl组成,在创建页面时加载。当我通过页面上的按钮更改语言时,语言是否发生变化是50/50。通常,MainPage语言的更改非常可靠,但UserControls非常不可靠。我有什么办法可以提高可靠性吗?

重新加载页面时,下面的方法也会导致令人不快的闪烁。

如果我在更改语言后重新启动应用程序,那么一切看起来都应该如此。

string lang = newLanguage;
ApplicationLanguages.PrimaryLanguageOverride = lang;
Windows.ApplicationModel.Resources.Core.ResourceContext.GetForViewIndependentUse().Reset();
Windows.ApplicationModel.Resources.Core.ResourceContext.GetForCurrentView().Reset();
Frame.Navigate(Frame.CurrentSourcePageType, null);

1 个答案:

答案 0 :(得分:1)

  

我有什么办法可以提高可靠性吗?

document已解释“当您设置PrimaryLanguageOverride时,会立即反映在ApplicationLanguages.Languages属性中。但是,此更改可能不会立即对应用UI中加载的资源生效。要确保应用程序响应此类更改,您可以在默认资源上下文中侦听QualifierValues属性,并采取重新加载资源所需的任何操作。这些要求可能会因应用程序使用的UI框架而异,并且可能会有所不同有必要重新启动应用程序。“

请阅读ApplicationLanguages.PrimaryLanguageOverride了解详情。