Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何更改资源。resw?_C#_Wpf_Xaml_Windows 8_Resourcedictionary - Fatal编程技术网

C# 如何更改资源。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

我正在用c#和Xaml编写一个Windows8应用程序

目前我有两个资源文件

--本地的

----德德

------资源.resw

----恩恩

------资源.resw

我正在加载文本部分,如下所示:

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文件。