Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/268.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# 动态全球化应用程序_C#_Wpf_Localization_Globalization_Resourcedictionary - Fatal编程技术网

C# 动态全球化应用程序

C# 动态全球化应用程序,c#,wpf,localization,globalization,resourcedictionary,C#,Wpf,Localization,Globalization,Resourcedictionary,在我的应用程序中,我有两个资源字典(西班牙语和英语),其中包含应用程序的所有字符串。在主窗口中,我有一个组合框,用户可以从中选择所需的语言。我想做的是,当用户单击指定的语言时,它应该更改整个应用程序的语言,而不仅仅是当前窗口。我在这里搜索了一个简单的解决方案,但没有找到。有人能提出实现这一目标的方法吗 目前我使用这种方式来更改当前表单的语言 在组合框上选择“已更改”事件 private void Language_SelectionChanged(object sender, Selection

在我的应用程序中,我有两个资源字典(西班牙语和英语),其中包含应用程序的所有字符串。在主窗口中,我有一个组合框,用户可以从中选择所需的语言。我想做的是,当用户单击指定的语言时,它应该更改整个应用程序的语言,而不仅仅是当前窗口。我在这里搜索了一个简单的解决方案,但没有找到。有人能提出实现这一目标的方法吗

目前我使用这种方式来更改当前表单的语言

在组合框上选择“已更改”事件

private void Language_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    ResourceDictionary dictionary = new ResourceDictionary();
    string lang = e.AddedItems[0].ToString();

    dictionary.Source = new Uri(@"/Resources/Languages/"+lang+".xaml", UriKind.Relative);
    Application.Current.Resources.MergedDictionaries.Clear();
    Application.Current.Resources.MergedDictionaries.Add(dictionary);
}
PS:我不想关闭并重新打开要应用的更改窗口

在不重新启动应用程序的情况下,提供即时语言更改。 请注意,这种方法使用
*.resx
-文件进行本地化,而不是特定于WPF的
资源字典


您可以按照上面链接上的通用指南进行操作。此外,您还可以通读。

尝试过。该文档已过时,无法在VS2012中使用。使用NuGet将WPFLocalizeExtension添加到项目中。遵循官方文件中的所有内容也没有运气。@barackomama文件没有过时。它涵盖了最新版本。我正在当前的WPF项目中使用扩展。它与VS2012和VS2013一起使用。你看过第二个链接了吗?什么不起作用?哦,也许我做错了什么。假设我有一个带有“@”键的按钮,并且我已经在不同的资源文件中用英语和西班牙语翻译了它。在设计过程中,我设置了DesignCulture=“en-US”,它仍然显示“@”作为按钮文本登录。当我尝试调试时也会发生同样的事情。我无法在设计模式下访问我的窗口,因为它显示无效的标记语言。我试着运行作者提供的测试程序,得到了相同的结果thing@barackomama我不确定,但可能resx文件不允许在开始时使用带“@”的键。您能否通过发布您使用的xaml更新您的问题,以及您现在如何设置语言?@barackomama您仍然有问题吗?