手动设置Xaml属性时,在RichTextBox中显示大括号



我目前正在为Windows Phone开发一个Twitter应用程序,在该应用程序中,通过自定义DependencyProperty,每个RichTextBoxXaml属性都绑定到推文的文本(其中包括程序生成的Run元素和所有文本)。在文本中出现大括号{}之前,此操作效果良好。我试着用{替换它们,用{}逃离,但没有成功。

奇怪的是,如果花括号出现在文本中间(更具体地说,在Run元素的Text属性中),一切都很好,只有当一个开头的花括号在开头*一个结尾的花括号时,RichTextBox才会崩溃。我可以通过在每个Run的开头和结尾插入具有​的零宽度空间来解决这个问题。

然而,如果在开头*同时有一个开头大括号和在结尾*同时有一个结尾大括号,这个问题就会变得更加复杂。在这种情况下,零宽度空格似乎不再起作用,所以唯一的解决办法是在文本的开头或结尾插入额外的"真实"字符,这显然是我做不到的

这似乎是RichTextBox的一个错误,正如两年前的回答所承认的那样。显然,它还没有修复。那么,有人知道我还有什么可以尝试的变通办法吗?

*也可以仅在前面加空白或仅在后面加空白

好吧,经过更多的修补,我找到了一个简单的解决方案。只需在每个Run的开头和结尾放一个"零宽度非连接符"字符‌‌在XAML中不起作用)。

显然,这个字符的处理方式与我之前使用的零宽度空间不同,甚至在文本开头和结尾都有大括号的情况下也可以使用。当然,还有更多的隐形字符也有同样的效果(请查看维基百科上的列表),但我认为零宽度的非连接符应该有最小的副作用。

最新更新