Error parsing StringFormat token with XamlReader
我知道下面的代码可用于VS2013 / .net 4.5.1,但在工作中我们只能使用.net 4,无法升级到最新的.net框架(主要是因为.net 4.5是就地替代品),如果您知道解决以下问题的方法,我们将不胜感激。我看到这是一个已知的错误,但是建议的解决方法都没有帮助我。
我必须将动态字符串格式传递给文本块,因为我们无法绑定StringFormat,所以我想到的唯一替代方法是按如下方式解析文字。以下是我为证明问题而编写的应用程序中的代码片段。
查看
1 2 3 | <Grid> <ListBox x:Name="listBox"/> </Grid> |
背后的代码
在后面的代码中,我按如下方式传递Stringformat文字,在现实世界中,我动态地传递了StringFormat令牌
1 2 3 4 | var template ="<DataTemplate xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"><TextBlock Text="{Binding StringFormat={}{0: ###.000; -###.00; -} }"></TextBlock></DataTemplate>"; var parsedDataTemplate = XamlReader.Parse(template) as DataTemplate; listBox.ItemTemplate = parsedDataTemplate; |
如前所述,该代码在.net 4.5中的工作原理很吸引人,是否可以针对.net 4尝试解决方法或任何其他黑客方法?
谢谢
我的修正中有错字。
我应该在开头和结尾的花括号上都使用"双反斜杠",我只在开头使用。应该是这样的。
\\\\\\\\ {0:###。000; -###。00; -\\\\\\\\}
在.net 4.5及更高版本中,不再需要反斜杠。
StringFormat = {} {0:###。000; -###。00; -}
编写一个转换器进行格式化。没有规则说不能将字符串转换为字符串。