在 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 应用程序当前区域性的货币格式?