c# - 具有不同 CurrentCulture 和 CurrentUICulture 的 WPF 应用程序

标签 c# wpf culture lang uiculture

我们的目标是为用户提供不同的应用程序语言和格式设置(例如,英文文本但德文日期/数字格式)。到目前为止,我已经尝试了不同的方法,最有希望的是这个(当然是简化的硬编码版本):

var german = new CultureInfo("de-DE");
var english = new CultureInfo("en-US");

Thread.CurrentThread.CurrentCulture = german;
CultureInfo.DefaultThreadCurrentCulture = german;

Thread.CurrentThread.CurrentUICulture = english;
CultureInfo.DefaultThreadCurrentUICulture = english;
FrameworkElement.LanguageProperty.OverrideMetadata(typeof(FrameworkElement), new FrameworkPropertyMetadata(XmlLanguage.GetLanguage(english.IetfLanguageTag)));

不幸的是,最后一行还强制执行日期和数字的英文格式(不仅仅是文本)。并且 FrameworkElement 中没有要覆盖的“CultureProperty”。那么有没有一种方法可以在不到处使用 StringFormat 的情况下实现所需的行为?

当我尝试在最后一行而不是英语中使用德国文化时,一些文本是德语而不是英语(这又是不正确的)。

最佳答案

关于c# - 具有不同 CurrentCulture 和 CurrentUICulture 的 WPF 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30785460/

相关文章:

c# - 在 C# 中循环遍历不同语言/文化的嵌入式资源

c# - 调用 System.Drawing.Image.Save 时出现无效参数错误

WPF ViewModel 命令可以执行问题

c# - WPF Bing map - 缩放至折线

wpf - 数学运算符可以应用于绑定(bind)路径吗?

javascript - Kendo Scheduler 中的英语时间格式

c# - 使用相同的参数签名重载

c# - Swig C++ 到 C# : How to wrap classes from C++ to make methods from template class available in derived class in C#?

c# - 在 Unity 中注册时是否可以指定可变长度的构造函数参数?

用于法国文化的 C# float.tryparse