使用XamlReader解析StringFormat标记时出错

时间:2013-10-28 14:09:58

标签: c# .net wpf xaml xamlreader

我知道下面的代码适用于VS2013 / .net 4.5.1,但是在工作中我们停留在.net 4上,无法升级到latest.net框架(主要是因为.net 4.5是替换的),如果您知道以下问题的工作,请欣赏。我看到that this is a known bug,但建议的工作都没有帮助我。

我需要将动态字符串格式传递给文本块,因为我们无法绑定StringFormat,我能想到的唯一选择是解析文字,如下所示。下面是我编写的用于证明问题的应用程序的代码片段。

查看

<Grid>
    <ListBox x:Name="listBox"/>
</Grid>

代码背后 在后面的代码我传递Stringformat文字如下,在现实世界中我动态传递StringFormat标记

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?

由于

2 个答案:

答案 0 :(得分:0)

编写转换器以进行格式化。没有规则说您无法将字符串转换为字符串。

答案 1 :(得分:0)

我的修复中有一个错字。

我原本应该在开始和结束的大括号上使用“双反斜杠”,我只是在开始时应用。应该是这样的。 \\ {0:###。000; - ### 00。 - 的 \\ }

在.net 4.5及更高版本中,不再需要反斜杠。 StringFormat = {} {0:###。000; - ### 00。 - }