在 xaml 中显示当前区域性小数分隔符

Posted

技术标签:

【中文标题】在 xaml 中显示当前区域性小数分隔符【英文标题】:Show current culture decimal separator in xaml 【发布时间】:2021-12-09 10:24:49 【问题描述】:

我只想显示设置为小数分隔符的内容,所以“。”或“,”。

这些都不起作用

<TextBlock Text="Binding CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator"/>

<TextBlock Text="Binding Source=x:Static CultureInfo.CurrentCulture.NumberFormat, Path=NumberDecimalSeparator"/>

【问题讨论】:

【参考方案1】:

对 Path 中的静态属性使用括号。

详情请见PropertyPath for Objects in Data Binding。

xmlns:g="clr-namespace:System.Globalization;assembly=mscorlib"

<TextBlock Text="Binding
    Path=(g:CultureInfo.CurrentCulture).NumberFormat.NumberDecimalSeparator"/>

或者通过x:Static设置绑定的Source:

<TextBlock Text="Binding
    Source=x:Static g:CultureInfo.CurrentCulture,
    Path=NumberFormat.NumberDecimalSeparator"/>

【讨论】:

【参考方案2】:

x:Static 仅适用于 static 属性或字段

CurrentCulture 是 CultureInfo 的静态成员,但 NumberFormat 是实例成员

所以正确的用法是:

<TextBlock Text="Binding Source=x:Static g:CultureInfo.CurrentCulture, Path=NumberFormat.NumberDecimalSeparator"/>

g 是一个命名空间定义,其中包含 CurrentCulture 类,应添加到顶层 (xmlns:g="clr-namespace:System.Globalization;assembly=mscorlib")

【讨论】:

或者复合路径,如另一个答案所示。

以上是关于在 xaml 中显示当前区域性小数分隔符的主要内容,如果未能解决你的问题,请参考以下文章

如何覆盖 ASP.NET Web 应用程序当前区域性的货币格式?

如何在 Google Charts 中指定小数点分隔符?

使用浏览器,我如何知道操作系统使用哪个小数分隔符?

如何为多个文本框使用一个绑定来分隔 WPF XAML 中的三位数字?

在 SSMS 中导入平面文件时的小数分隔符

在 SSMS 中导入平面文件时的小数分隔符