Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.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
Wpf StringFormat';c';始终显示为美元货币?_Wpf_Binding - Fatal编程技术网

Wpf StringFormat';c';始终显示为美元货币?

Wpf StringFormat';c';始终显示为美元货币?,wpf,binding,Wpf,Binding,“c”货币字符串格式以en-US格式生成文本,尽管我的电脑的语言环境设置为其他格式。我是做错了什么,还是这是我想要的行为 Phil如果我没有弄错的话,这取决于正在运行的线程中的区域性设置 System.Threading.Thread.CurrentThread.CurrentUICulture 或 System.Threading.Thread.CurrentThread.CurrentCulture 因此,根据这一行为,这是故意的。您可能习惯于使用运行应用程序的PC的区域性设置来设置字符串的

“c”货币字符串格式以en-US格式生成文本,尽管我的电脑的语言环境设置为其他格式。我是做错了什么,还是这是我想要的行为


Phil

如果我没有弄错的话,这取决于正在运行的线程中的区域性设置

System.Threading.Thread.CurrentThread.CurrentUICulture

System.Threading.Thread.CurrentThread.CurrentCulture

因此,根据这一行为,这是故意的。您可能习惯于使用运行应用程序的PC的区域性设置来设置字符串的格式,但WPF中的绑定不打算以这种方式工作:

绑定转换器从不使用CurrentCulture-这是经过设计的,因此它们的行为在所有机器和区域设置中都是可预测的

但是,您可以指定转换器应使用的区域性。有两种方法可以做到这一点:

  • 设置Binding.ConverterCulture。例如,
  • 在目标元素上设置xml:lang(或等效的Language)属性。例如,

  • 看起来您需要提前了解应用程序将要运行的所有不同文化。这对所有在美国以外有用户的人来说都有点垃圾。

    应用程序中执行此操作。启动

    FrameworkElement.LanguageProperty.OverrideMetadata(
        typeof(FrameworkElement),
        new FrameworkPropertyMetadata(
            XmlLanguage.GetLanguage(
                CultureInfo.CurrentCulture.IetfLanguageTag)));
    
    更多信息:

    我明白了。那么,主应用程序线程是否总是默认为en US?我不完全确定这是否与区域设置位置或键盘语言有关,这似乎不太可能,因为我所有的区域和键盘设置都设置为UK。值得注意的是,这不尊重用户的自定义设置。例如,我使用en GB,并在控制面板中将我的日期格式自定义为“yyyy-MM-dd”。但不幸的是,WPF将使用指定区域性的默认设置。