我目前正在开发适用于Windows Phone的Twitter应用,其中 - 通过自定义DependencyProperty
- 每个RichTextBox
的Xaml
属性绑定到推文的文本(包括以编程方式生成的Run
元素及所有文本)。这在文本中有大括号{
和}
之前一直有效。我尝试将其替换为{
并使用{}
转义,但无济于事。
奇怪的是,如果花括号出现在文本的中间(更具体地说,在Text
元素的Run
属性中)一切都很好,只有当一个开口卷曲时大括号位于开头* 或结尾的大括号是RichTextBox
崩溃的结尾*。通过在每个​
的开头和结尾插入零Run
的零宽度空格,我能够解决这个问题。
然而,如果在开头* 和结尾处有一个结束花括号*时,这个问题会变得更加复杂。在这种情况下,零宽度空间似乎不再起作用,因此唯一的解决方法是在文本的开头或结尾插入额外的“真实”字符,这显然是我无法做到的。
这似乎是RichTextBox
的错误,正如this answer两年前所承认的那样。显然,它尚未修复。那么,有没有人知道我可以尝试的任何进一步的解决方法?
*也可以仅由空格开头,或者只跟空格
答案 0 :(得分:2)
好的,经过一些修修补补后,我发现了一个简单的修复方法。只需在每个‌
的开头和结尾添加"zero-width non-joiner"字符‌
(Run
在XAML中不起作用)。
显然,这个字符的处理方式与我之前使用的零宽度空间的处理方式不同,如果你的文字在开头的和结尾都有花括号,那么它甚至可以使用。当然有更多不可见的字符具有相同的效果(检查this list on Wikipedia)但是零宽度的非连接符应该具有我认为的最小副作用。