2016-12-23 35 views
3

我有下面的代碼來更改我的應用程序的語言,但它被證明是不可靠的。我的應用程序由一個MainPage和一組UserControls組成,在創建頁面時加載。當我通過頁面上的按鈕更改語言時,語言是否更改爲50/50。通常,MainPage語言相當可靠地進行更改,但UserControl非常不可靠。我能做些什麼來提高可靠性嗎?更改UWP應用程序的語言是氣質的

下面的方法也會導致頁面重新加載時出現不愉快的閃爍。

如果我在更改語言後重新啓動應用程序,那麼所有內容看起來都應該如此。

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); 
+0

UserControls不會根據您的意願更改語言。你必須重新加載整個頁面。但是,您可以創建一個字符串列表作爲DependencyProperty和x:將其與OneWay模式綁定到XAML中的UserControls。您只需要在您希望更改語言時更改該列表。 –

回答

1

有什麼我可以做,以提高可靠性?

document解釋「當你設置PrimaryLanguageOverride,這立即反映在ApplicationLanguages.Languages財產。但是,這種變化可能不會立即在應用中的用戶界面加載的資源的作用。爲了確保應用程序響應此類更改,您可以在默認資源上下文中偵聽QualifierValues屬性,並採取可能需要的任何操作重新加載資源。這些要求可能因應用程序使用的UI框架而異,並且可能需要重新啓動應用「。

有關更多詳細信息,請參閱ApplicationLanguages.PrimaryLanguageOverride

相關問題