C# 如何更改资源。resw?
我正在用c#和Xaml编写一个Windows8应用程序 目前我有两个资源文件 --本地的 ----德德 ------资源.resw ----恩恩 ------资源.resw 我正在加载文本部分,如下所示:C# 如何更改资源。resw?,c#,wpf,xaml,windows-8,resourcedictionary,C#,Wpf,Xaml,Windows 8,Resourcedictionary,我正在用c#和Xaml编写一个Windows8应用程序 目前我有两个资源文件 --本地的 ----德德 ------资源.resw ----恩恩 ------资源.resw 我正在加载文本部分,如下所示: private ResourceLoader _resources = new ResourceLoader(); _resources.GetString("Menu_Contacts") 现在我的问题是,如何在运行时更改资源?您可以直接访问资源密钥: Properties.Resour
private ResourceLoader _resources = new ResourceLoader();
_resources.GetString("Menu_Contacts")
现在我的问题是,如何在运行时更改资源?您可以直接访问资源密钥:
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();
您可以直接访问资源密钥:
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();
最简单的方法是设置
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;
});
};
最简单的方法是设置
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;
});
};
谢谢,但遗憾的是,这种方法对我没有用。我想更改默认资源,但我不知道如何更改。这样我就可以继续使用_resources.GetString(“Menu\u Contacts”),只需更改命令使用的resources.resw文件。谢谢,但遗憾的是,这种方法对我没有用处。我想更改默认资源,但我不知道如何更改。因此,我可以继续使用_resources.GetString(“Menu_Contacts”),只应更改命令使用的resources.resw文件。