.net Silverlight 4 RichTextBox-can';t使用包含大括号的文本还原Xaml
我们有一个Silverlight应用程序,使用RichTextBox作为富文本编辑器,供用户创建电子邮件 我们实际上有自己的序列化程序,但实际上我们正在保存和恢复Xaml。据我所知,不可能恢复任何包含大括号的文本 通过创建RichTextBox并在其中键入类似于.net Silverlight 4 RichTextBox-can';t使用包含大括号的文本还原Xaml,.net,silverlight,xaml,richtextbox,.net,Silverlight,Xaml,Richtextbox,我们有一个Silverlight应用程序,使用RichTextBox作为富文本编辑器,供用户创建电子邮件 我们实际上有自己的序列化程序,但实际上我们正在保存和恢复Xaml。据我所知,不可能恢复任何包含大括号的文本 通过创建RichTextBox并在其中键入类似于{weird}的内容,您可以相当轻松地演示这一点。然后获取textbox的.Xaml属性,并将其设置为另一个textbox-kablooie的.Xaml属性 由于我们有自己的序列化程序,我尝试用转义Run元素的文本成员。这没什么区别。我试
{weird}
的内容,您可以相当轻松地演示这一点。然后获取textbox的.Xaml属性,并将其设置为另一个textbox-kablooie的.Xaml属性
由于我们有自己的序列化程序,我尝试用
转义Run元素的文本成员。这没什么区别。我试着用{;但这也不行。这听起来像是xml问题。您是否尝试过将数据封装在CDATA块中以封装任何特殊字符
<richtext>
<![CDATA[
function matchwo(a,b)
{
if (a < b && a < 0) then
{
return 1;
}
else
{
return 0;
}
}
]]>
<richtext>
在此确认问题并与团队核实。如果运行以大括号开始,则会引发值异常。我正在调查。一位Silverlight开发人员已经确认这是一个bug。如果运行文本以“{”或后跟“{”的空格开头,就会发生这种情况。因为我们有自己的序列化程序,我可以在每次运行开始时插入一个零宽度空格(;),这就解决了问题。尝试使用{}{wird}
(打开和关闭的花括号)转义。此问题也出现在Windows Phone 7(Mango)中RichTextBox
。我发现了一个由在每个运行
的开始和结束处放置一个零宽度非连接符和#8204;
字符组成的字符串。与使用零宽度空格相反,如果在开始处有一个打开的花括号,在结束处有一个关闭的花括号,这也可以工作。将运行文本放在不幸的是,Silverlight XamlReader不支持CDATA块。没有帮助(我们先尝试了,我应该在问题中提到)。问题是Silverlight RichTextBox中有一个bug。