Xaml绑定无法检测自定义文化

时间:2011-07-28 09:43:52

标签: wpf globalization culture

互联网上的所有文章都建议,要使XAML绑定检测操作系统中的选定文化,应使用此行。

 FrameworkElement.LanguageProperty.OverrideMetadata(typeof(FrameworkElement), new FrameworkPropertyMetadata((XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag))));

问题在于,Windows中的区域设置允许用户以用户想要的任何方式自定义日期和数字的格式。 例如,假设用户想要3个十进制数而不是2个。他进入区域设置并进行此更新。问题是在Xaml绑定中没有获取此更改

<TextBlock Text="{Binding Payments, StringFormat=C}" /> <!--display 2 digits-->

奇怪的是,在后面的代码中,如果我使用ToString(“C”),我将成功获得我在服务器端所做的任何自定义。

decimal sampleNumber = 1.123;
string s = sampleNumber.ToString("C"); //Puts 3 digits in the string variable

我的解决方法是使用自定义转换器,我在其中执行ToString并将字符串返回到绑定。但奇怪的是,我没有在网上的任何地方发现过这个问题(这很可能是WPF中的一个错误)。 我错过了什么吗?

1 个答案:

答案 0 :(得分:3)

我不确定它是否适合你,但我记得有一次我解决了这个问题,但关于日期格式。我使用ConverterCulture属性进行绑定:

<TextBox Text="{Binding Path=Date, ConverterCulture={x:Static Globalization:CultureInfo.CurrentCulture}}"/>