Wpf StringFormat';c';始终显示为美元货币?
“c”货币字符串格式以en-US格式生成文本,尽管我的电脑的语言环境设置为其他格式。我是做错了什么,还是这是我想要的行为Wpf StringFormat';c';始终显示为美元货币?,wpf,binding,Wpf,Binding,“c”货币字符串格式以en-US格式生成文本,尽管我的电脑的语言环境设置为其他格式。我是做错了什么,还是这是我想要的行为 Phil如果我没有弄错的话,这取决于正在运行的线程中的区域性设置 System.Threading.Thread.CurrentThread.CurrentUICulture 或 System.Threading.Thread.CurrentThread.CurrentCulture 因此,根据这一行为,这是故意的。您可能习惯于使用运行应用程序的PC的区域性设置来设置字符串的
Phil如果我没有弄错的话,这取决于正在运行的线程中的区域性设置 System.Threading.Thread.CurrentThread.CurrentUICulture 或 System.Threading.Thread.CurrentThread.CurrentCulture 因此,根据这一行为,这是故意的。您可能习惯于使用运行应用程序的PC的区域性设置来设置字符串的格式,但WPF中的绑定不打算以这种方式工作: 绑定转换器从不使用CurrentCulture-这是经过设计的,因此它们的行为在所有机器和区域设置中都是可预测的 但是,您可以指定转换器应使用的区域性。有两种方法可以做到这一点:
看起来您需要提前了解应用程序将要运行的所有不同文化。这对所有在美国以外有用户的人来说都有点垃圾。在
应用程序中执行此操作。启动:
FrameworkElement.LanguageProperty.OverrideMetadata(
typeof(FrameworkElement),
new FrameworkPropertyMetadata(
XmlLanguage.GetLanguage(
CultureInfo.CurrentCulture.IetfLanguageTag)));
更多信息:
我明白了。那么,主应用程序线程是否总是默认为en US?我不完全确定这是否与区域设置位置或键盘语言有关,这似乎不太可能,因为我所有的区域和键盘设置都设置为UK。值得注意的是,这不尊重用户的自定义设置。例如,我使用en GB,并在控制面板中将我的日期格式自定义为“yyyy-MM-dd”。但不幸的是,WPF将使用指定区域性的默认设置。