我正在编写一个带有c#和Xaml的Windows 8应用程序。
目前我有两个资源档案。
- 本地
----脱DE
------ Resources.resw
----烯EN
------ Resources.resw
我正在加载Textparts,如下所示:
private ResourceLoader _resources = new ResourceLoader();
_resources.GetString("Menu_Contacts")
现在这是我的问题,如何在运行时更改资源?
答案 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();