1

我正在用 c# 和 Xaml 编写一个 Windows 8 应用程序。

目前我有两个资源文件。

- 当地的

----de-DE

------资源.resw

----zh-CN

------资源.resw

我正在加载这样的文本部分:

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 回答