2017-12-13 14 views
0

私はいくつかのコントロールのテキストを変更するアプリケーション言語を変更する私のビューモデルでいくつかのコードを持っています。UWP MVVM:言語の変更後のページを更新

これは、ダッシュボードページのデータコンテキストに設定されてDashboardViewModel、次のとおりです。私は成功しません、更新するためにページを強制しようとしたNavigationService.Navigate(typeof(DashboardPage));

ApplicationLanguages.PrimaryLanguageOverride = languageCode; 
ResourceContext.GetForCurrentView().Reset(); 
ResourceContext.GetForViewIndependentUse().Reset(); 
NavigationService.Navigate(typeof(DashboardPage)); 

。どうすればいい?

+0

ページキャッシュをクリアしましたか? https://stackoverflow.com/questions/32715690/c-sharp-change-app-language-programmatically-uwp-realtime –

+0

@IgorŠevoはい、同じ結果です。問題は、 'Navigate'メソッドが同じページにナビゲートしないことです。しかし、おそらく私がWindows Template Studioを使用して以来、おそらくNavigationService.csファイルが利用可能なので、Navigateメソッドが行う「同じページチェック」を実行しない別のメソッドを追加しました。私はこれが良い習慣ではないと確信していますが、うまくいきます。 :-) – Eutherpy

答えて

0

NavigationService.Navigate()同じページに移動しようとしている場合は何もしません。

回避策は、ナビゲーション要求にパラメータを追加して強制的に実行することです。

NavigationService.Navigate(typeof(DashboardPage), "force refresh after language change"); 
+0

それは私のために働いていない。 – Eutherpy

0

この行は私にとってはうまく機能します。

await Task.Delay(100); 
Frame.Navigate(this.GetType()); 
関連する問題