Silverlight 4 RichTextBox - 无法使用包含花括号的文本恢复Xaml

时间:2010-06-08 17:39:05

标签: .net silverlight xaml richtextbox

我们有一个Silverlight应用程序,使用RichTextBox作为富文本编辑器,供用户创建电子邮件。

我们实际上有自己的序列化程序,但基本上我们正在保存和恢复Xaml。据我所知,恢复任何包含花括号的文字是不可能的。

您可以通过创建RichTextBox并在其中键入类似{weird}的内容来相当轻松地演示这一点。然后获取文本框的.Xaml属性并将其设置在另一个文本框的.Xaml属性上 - kablooie。

由于我们有自己的序列化程序,我尝试使用<Run Text="{} the real {Text} here" />转义Run元素的Text成员。这没什么区别。我试过用&amp;#123替换括号;但这也不起作用。

5 个答案:

答案 0 :(得分:2)

在此确认问题并与团队核实。如果使用花括号运行启动,则会出现抛出值异常。我正在调查。

答案 1 :(得分:1)

Windows Phone 7(芒果)RichTextBox中也会出现此问题。我找到了一个workaround here,其中包括在每个&#8204;的开头和结尾放置一个零宽度的非连接符Run字符。与使用零宽度空间相反,如果您在开头处有一个开口大括号,并且在结尾处有一个结束大括号,那么这也是有效的。

答案 2 :(得分:0)

这听起来像是一个xml问题。您是否尝试将数据封装在CDATA块中以封装任何特殊字符?

<richtext>

    <![CDATA[
    function matchwo(a,b)
    {
    if (a < b && a < 0) then
      {
      return 1;
      }
    else
      {
      return 0;
      }
    }
    ]]>

<richtext>

答案 3 :(得分:0)

Silverlight开发人员已将此确认为错误。如果“运行文本”以“{”或空格后跟“{”开头,则会发生这种情况。因为我们有自己的序列化器,所以我可以在每次运行开始时插入零宽度空间(&amp;#8203;)来解决问题。

答案 4 :(得分:0)

尝试使用{}{weird}(打开和关闭花括号)

进行转义