我知道下面的代码适用于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?
由于
答案 0 :(得分:0)
编写转换器以进行格式化。没有规则说您无法将字符串转换为字符串。
答案 1 :(得分:0)
我的修复中有一个错字。
我原本应该在开始和结束的大括号上使用“双反斜杠”,我只是在开始时应用。应该是这样的。 \\ {0:###。000; - ### 00。 - 的 \\ 强>}
在.net 4.5及更高版本中,不再需要反斜杠。 StringFormat = {} {0:###。000; - ### 00。 - }