私は、ユーザーがドロップダウンメニューを使用して言語を切り替えることができる多言語アプリケーションを用意しています。それはうまく動作しますが、私は現在のフレームに再度移動する必要があるので、言語を切り替えるには遅すぎます。これは私の製品をリロードする必要があるためです(時間がかかります)。ここで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フォームで
、私のような何かを行うことができますか?それとも私の問題に取り組むための良い方法がありますか?
おかげ
私はクラスを作成してから、そのクラスにすべての文字列リソースをロードしてバインドする必要があるため、バインディングを使用しないようにしました。しかし、言語の変更には、何とか変更を通知する必要があります。私のコードには膨大な変更が必要です。したがって、私の質問は、リソースファイルからコンポーネントをリロードする方法です。 – Sam
あなたは一度 'INotifyPropertyChanged'を実装しなければならないと思います。あなたは準備ができています。あなたは単にビューモデルから別のリソースを使用するように値を変更するだけです。 –
はい、私はそれを知っています。私はバインディングの使用を検討しましたが、私のコードではたくさん変更する必要があります。私は私の質問に答えをつけることを好む。私はx:UidですべてのGUIコンポーネントを持っています。私は単にGUIを強制的にリフレッシュする必要があります。 – Sam