1

私はc#とXamlを使用してWindows8アプリを作成しています。

現在、2つのリソースファイルがあります。

- ローカル

---- de-DE

------ Resources.resw

---- en-EN

------ Resources.resw

私は次のようにTextpartsをロードしています:

private ResourceLoader _resources = new ResourceLoader();

_resources.GetString("Menu_Contacts")

これが私の質問です。実行時にリソースを変更するにはどうすればよいですか?

4

2 に答える 2

1

PrimaryLanguageOverride最も簡単な方法は、プロパティを設定することです。

ApplicationLanguages.PrimaryLanguageOverride = "de-DE";

これによりアプリケーションの言語が変更されますが、すでにロードされている現在の画面は更新されないことに注意してください。現在の画面のテキストを更新するには、次のイベントハンドラーを実装できます。

core.ResourceManager.Current.DefaultContext.QualifierValues.MapChanged 
        += async (s, m) =>
        {
            await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
            {
                settingsLanguageLabel.Text = core.ResourceManager.Current.MainResourceMap.GetValue("Resources/SettingsLanguageLabel/Text").ValueAsString;
                settingsRestartLabel.Text = core.ResourceManager.Current.MainResourceMap.GetValue("Resources/SettingsRestartLabel/Text").ValueAsString;
            });
        };
于 2012-10-14T11:54:36.317 に答える
0

リソースキーに直接アクセスできます:

Properties.Resources.myResourceKey = "new value";

または、キーを書き換えることができます。

resourceWriter = new ResXResourceWriter(Server.MapPath("/App_GlobalResources/Resource.resx"));
 foreach (var cnes_ in _ResList)
 {
    resourceWriter.AddResource(cnes_.Key, cnes_.Value);
 }
 resourceWriter.Close();
于 2012-10-12T12:52:05.633 に答える