【问题标题】:Show current culture decimal separator in xaml在 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}"/>
【问题讨论】:
标签:
.net
wpf
xaml
winrt-xaml
uwp-xaml
【解决方案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")