【问题标题】: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")

      【讨论】:

      • 或者复合路径,如另一个答案所示。
      猜你喜欢
      • 2016-05-05
      • 1970-01-01
      • 2020-05-21
      • 2013-12-21
      • 1970-01-01
      • 1970-01-01
      • 2023-04-08
      • 1970-01-01
      • 2017-05-05
      相关资源
      最近更新 更多