使用 XamlReader 分析字符串格式令牌时出错

本文关键字:令牌 出错 格式 字符串 XamlReader 使用 | 更新日期: 2023-09-27 18:37:19

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

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

视图

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

代码隐藏在后面的代码中,我传递了如下所示的字符串格式文字,在现实世界中,我动态传递了 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 的黑客?

谢谢

使用 XamlReader 分析字符串格式令牌时出错

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

我的修复中有一个错字。

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

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