Dre*_*kes 12 .net xaml escaping markup-extensions
我有一个格式化数字的值转换器(不幸的是我不能使用SP1).它工作正常,直到它获得百分比.
这是一个例子:
<TextBlock Text="{Binding Path=PercentageComplete,
Converter={StaticResource NumberFormatter},
ConverterParameter='0.00 %'}" />
Run Code Online (Sandbox Code Playgroud)
不幸的是,当我Double.ToString看到一个百分比字符时,它会将该数字乘以100.在我的情况下,该数字已经是一个百分比,不需要转换.
在C#中,这可以通过%使用单引号转义字符来实现:
(99.99).ToString("0.00 %") // gives -> "9999 %"
(99.99).ToString("0.00 '%") // gives -> "99.99 %"
Run Code Online (Sandbox Code Playgroud)
不幸的是,我不能ConverterParameter在上面的XAML标记扩展中使用单引号.有没有办法逃避它?我试过加倍单引号并使用反斜杠,但都无法编译.
Row*_*haw 11
未经测试,但您尝试过:
<TextBlock Text="{Binding Path=PercentageComplete,
Converter={StaticResource NumberFormatter},
ConverterParameter="0.00 '%"}" />
Run Code Online (Sandbox Code Playgroud)
以下内容摘自http://msdn.microsoft.com/en-us/library/ee200269.aspx.
您可以使用反斜杠转义任何字符.它不解析反斜杠,只是跳过它们.所以:
'foo\'bar'变得foo'bar;"foo\"bar"变得foo"bar;'foo\\bar'变得foo\bar;'foo\nbar'成为foonbar而不是换行符.但是,标记扩展解析非常奇怪.尽管Visual Studio语法突出显示不支持它,但除了\{},=有效值字符之外的任何字符都是如此.这意味着以下结构是合法的:
{MyExtension Name=foo'bar} (引号必须是第一个被认为是字符串引用的字符;其他任何地方只需逐字复制);{MyExtension Name=f oo}(空间也是合法的;这就变成了f oo);{MyExtension Name= foo }(修改了值周围的空格;这就变成了foo);{MyExtension Name=foo\\bar}(\逐字复制后的字符,这样就变成了foo\bar);{MyExtension Name=foo \\ bar}(这变成了foo \ bar);{MyExtension Name=foo \} bar}(而这就变成了foo } bar).请注意,\规则也适用于此:跟随a的任何字符\都是逐字复制的.
| 归档时间: |
|
| 查看次数: |
9200 次 |
| 最近记录: |