如何更改Resources.resw?

时间:2012-10-12 12:32:51

标签: c# wpf xaml windows-8 resourcedictionary

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

目前我有两个资源档案。

  

- 本地

     

----脱DE

     

------ Resources.resw

     

----烯EN

     

------ Resources.resw

我正在加载Textparts,如下所示:

private ResourceLoader _resources = new ResourceLoader();

_resources.GetString("Menu_Contacts")

现在这是我的问题,如何在运行时更改资源?

2 个答案:

答案 0 :(得分: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;
            });
        };

答案 1 :(得分: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();