关于C#:使用XamlReader解析StringFormat令牌时出错

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; -}


编写一个转换器进行格式化。没有规则说不能将字符串转换为字符串。