1

我知道下面的代码适用于 VS2013/.net 4.5.1,但是在工作中我们被困在 .net 4 并且无法升级到 latest.net 框架(主要是因为 .net 4.5 是一个就地替代品),如果你知道解决以下问题的方法。我看到这是一个已知的错误,但建议的解决方法都没有帮助我。

我需要将动态字符串格式传递给文本块,因为我们无法绑定 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 尝试解决方法或任何其他技巧吗?

谢谢

4

2 回答 2

0

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

于 2013-10-28T14:30:41.440 回答
0

我的修复中有一个错字。

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

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

于 2013-10-31T01:22:36.467 回答