WPF XAML StringFormat. Escape %

3
我有一个包含百分数值的字段,其格式为小数形式。
我想将文本块绑定到该字段,并在显示时带上 % 符号。
例如: 如果 myfield = 5.0,则应显示为 "5.00%"。
以下是我的绑定代码:
Text="{Binding Path=myfield, StringFormat=0.00## \%}"

当前显示为“500.00 %”。

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

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


我能想到的唯一可能是在反斜杠和百分号之间存在另一个零宽字符(尽管这似乎不太可能)。 - ChrisF
3个回答

3

看起来我们需要将反斜杠加倍,我认为\本身需要被转义,以帮助XAML编译器理解它是一个单独的\,在与%组合之前进行完美的转义,这将被StringFormat理解为字符串%(而不是由XAML编译器理解为字面上的字符串%):

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

从技术上讲,这里有两个解释器,一个是XAML编译器,另一个是StringFormat引擎。请注意,在XAML中,\也用于转义一些特殊字符,例如{}

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

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

0
你可以尝试使用引号代替:
Text="{Binding Path=myfield, StringFormat=0.00## '%'}"

1
恐怕这甚至无法编译。 - apc

0
我找到了一个解决我的问题的答案,但它并没有完全回答我的问题。
 Text="{Binding Path=myfield, StringFormat={}{0:0.00##} %}"

这是针对参数索引0的格式,将其格式化为“0.00##”,然后附加“%”。

虽然这会得到所需的结果,但它并没有解释如何在参数0的字符串格式中转义“%”。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接