2017-04-08 23 views
1

私は、ユーザーがドロップダウンメニューを使用して言語を切り替えることができる多言語アプリケーションを用意しています。それはうまく動作しますが、私は現在のフレームに再度移動する必要があるので、言語を切り替えるには遅すぎます。これは私の製品をリロードする必要があるためです(時間がかかります)。ここでUWP再ナビゲートせずにテキストを更新する方法

は私のコードは次のとおりです。

var culture = new System.Globalization.CultureInfo(sLang); 
Windows.Globalization.ApplicationLanguages.PrimaryLanguageOverride = culture.Name; 
Windows.ApplicationModel.Resources.Core.ResourceContext.GetForCurrentView().Reset(); 
Windows.ApplicationModel.Resources.Core.ResourceContext.GetForViewIndependentUse().Reset(); 

Frame.Navigate(Frame.CurrentSourcePageType); //I want to avoid this as calling this will re-initialize my page - which in turn re-load my products 

私の質問は、xは、すべてのコンポーネントを強制するが方法です:Uidのは、リソースファイル(例えばストリングス/ EN-US /リソースからリロードします.reswフレームなし.Navigate()? UWPで任意の等価はあり

System.Resources.ResourceManager rm = new System.Resources.ResourceManager(typeof(MainForm)); 
foreach (Control ctl in this.Controls) 
{ 
    rm.ApplyResources(ctl, ctl.Name); 
} 

:Winフォームで

、私のような何かを行うことができますか?それとも私の問題に取り組むための良い方法がありますか?

おかげ

答えて

0

は、私は私のデータの変化を通知するthis sampleを使用していますthis pattern from the documentationを使用しました。もし間違っていない場合は、xaml要素の内容(例えば、テキスト)が変更されたときにそれを通知したいとします。次に、バインディングを使用する必要があります。

希望に役立ちます!

+0

私はクラスを作成してから、そのクラスにすべての文字列リソースをロードしてバインドする必要があるため、バインディングを使用しないようにしました。しかし、言語の変更には、何とか変更を通知する必要があります。私のコードには膨大な変更が必要です。したがって、私の質問は、リソースファイルからコンポーネントをリロードする方法です。 – Sam

+0

あなたは一度 'INotifyPropertyChanged'を実装しなければならないと思います。あなたは準備ができています。あなたは単にビューモデルから別のリソースを使用するように値を変更するだけです。 –

+0

はい、私はそれを知っています。私はバインディングの使用を検討しましたが、私のコードではたくさん変更する必要があります。私は私の質問に答えをつけることを好む。私はx:UidですべてのGUIコンポーネントを持っています。私は単にGUIを強制的にリフレッシュする必要があります。 – Sam

関連する問題