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

时间:2012-08-23 18:53:32

标签: silverlight windows-phone-7 xaml richtextbox

我目前正在开发适用于Windows Phone的Twitter应用,其中 - 通过自定义DependencyProperty - 每个RichTextBoxXaml属性绑定到推文的文本(包括以编程方式生成的Run元素及所有文本)。这在文本中有大括号{}之前一直有效。我尝试将其替换为{并使用{}转义,但无济于事。

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

然而,如果在开头* 结尾处有一个结束花括号*时,这个问题会变得更加复杂。在这种情况下,零宽度空间似乎不再起作用,因此唯一的解决方法是在文本的开头或结尾插入额外的“真实”字符,这显然是我无法做到的。

这似乎是RichTextBox的错误,正如this answer两年前所承认的那样。显然,它尚未修复。那么,有没有人知道我可以尝试的任何进一步的解决方法?

*也可以仅由空格开头,或者只跟空格

1 个答案:

答案 0 :(得分:2)

好的,经过一些修修补补后,我发现了一个简单的修复方法。只需在每个‌的开头和结尾添加"zero-width non-joiner"字符‌Run在XAML中不起作用)。

显然,这个字符的处理方式与我之前使用的零宽度空间的处理方式不同,如果你的文字在开头的结尾都有花括号,那么它甚至可以使用。当然有更多不可见的字符具有相同的效果(检查this list on Wikipedia)但是零宽度的非连接符应该具有我认为的最小副作用。