【问题标题】:WPF XAML StringFormat. Escape %WPF XAML 字符串格式。逃脱 %
【发布时间】:2015-10-19 08:02:51
【问题描述】:

我有一个字段,其中包含作为小数的百分比值。

一个文本块绑定到这个字段,我想用 % 符号显示它。

例如: 如果 myfield = 5.0 则文本应显示为“5.00 %”

这是我的绑定:

Text="{Binding Path=myfield, StringFormat=0.00## \%}"

当前显示“500.00 %”

“\”似乎没有转义“%”。

如何转义 XAML StringFormat 中的“%”?

【问题讨论】:

  • 我唯一能想到的是反斜杠和%之间还有另一个零宽度字符(但不太可能出现)。

标签: .net wpf xaml


【解决方案1】:

看起来我们需要将斜杠加倍,我认为 \ 本身需要转义以帮助 XAML 编译器理解它是单个 \ 在它与 % 组合之前完美转义% 将被 StringFormat(不是 XAML 编译器)理解为文字字符串 %

Text="{Binding Path=myfield, StringFormat=0.00## \\%}"

所以从技术上讲,我们这里有 2 个解释器,一个由 XAML 编译器提供,另一个由 StringFormat 引擎提供。请注意,\ 还用于转义 XAML 中的一些特殊字符,例如 {}

通过显式指定参数索引,您可以这样做:

Text="{Binding Path=myfield, StringFormat=\{0:0.00## \\%\}}"

【讨论】:

    【解决方案2】:

    你可以用引号来代替:

    Text="{Binding Path=myfield, StringFormat=0.00## '%'}"
    

    【讨论】:

    • 恐怕连编译都不会。
    【解决方案3】:

    找到了我的问题的答案,但它没有完全回答我的问题:

     Text="{Binding Path=myfield, StringFormat={}{0:0.00##} %}"
    

    这表示参数索引 0 将其格式化为“0.00##”,然后附加“%”。

    虽然这给出了预期的结果,但它没有解释如何在参数 0 的字符串格式中转义 %。

    【讨论】:

      猜你喜欢
      • 2013-09-09
      • 2017-04-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-30
      • 1970-01-01
      相关资源
      最近更新 更多