Silverlight 4 RichTextBox - не удается восстановить Xaml с текстом, содержащим фигурные скобки - PullRequest
1 голос
/ 08 июня 2010

У нас есть приложение Silverlight, использующее RichTextBox в качестве текстового редактора для пользователя для создания электронных писем.

На самом деле у нас есть собственный сериализатор, но по сути мы сохраняем и восстанавливаем Xaml. Насколько я могу судить, восстановить текст, содержащий фигурные скобки, невозможно.

Вы можете довольно легко продемонстрировать это, создав RichTextBox и введя в него что-то похожее на {weird}. Затем возьмите свойство .Xaml текстового поля и задайте его для свойства .Xaml другого текстового поля - kablooie.

Поскольку у нас есть собственный сериализатор, я попытался экранировать элемент Text элементов Run с помощью <Run Text="{} the real {Text} here" />. Это не имеет значения. Я пытался заменить скобки на {, но это тоже не работает.

Ответы [ 5 ]

2 голосов
/ 08 июня 2010

Подтверждение проблемы здесь и проверка с командой. Если прогон запускает с фигурными скобками, создается исключение значения. Я расследую.

1 голос
/ 24 августа 2012

Эта проблема также возникает в Windows Phone 7 (Mango) RichTextBox.Я нашел обходной путь здесь , который заключается в размещении символа &#8204; не присоединяющегося к нулевой ширине в начале и конце каждого Run.В отличие от использования пробела нулевой ширины, это также работает, если у вас есть открывающая фигурная скобка в начале и закрывающая фигурная скобка в конце.

0 голосов
/ 10 июня 2010

попробуйте убежать с {}{weird} (открытые и закрытые фигурные скобки)

0 голосов
/ 08 июня 2010

Разработчик Silverlight подтвердил это как ошибку. Это происходит, если текст выполнения начинается с «{» или пробела, за которым следует «{». Поскольку у нас есть собственный сериализатор, я могу вставить пробел нулевой ширины () в начале каждого запуска, который решает проблему.

0 голосов
/ 08 июня 2010

Это звучит как проблема с XML. Вы пытались инкапсулировать свои данные в блок CDATA, чтобы инкапсулировать какие-либо специальные символы?

<richtext>

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

<richtext>
...