Как вы загружаете и сохраняете контент из элемента управления Silverlight 4 RichTextBox?

Я изучал возможности элемента управления RichTextBox в Silverlight 4.

Чего я еще не нашел, так это примеров загрузки и сохранения содержимого в RichTextBox.

Кто-нибудь сталкивался или может пролить свет на это?

В элементе управления есть коллекция BlocksCollection, в которой, я полагаю, можно использовать XamlReader для загрузки группы разметки, предполагая, что разметка имеет единственный узел верхнего уровня типа Block. Затем добавьте этот блок в коллекцию Blocks. Обидно, что RichTextBox в этом случае потрудился создать «коллекцию», почему бы просто не использовать Block элемент верхнего уровня?

Тем не менее, это все еще оставляет сохранение содержимого RichTextBox, я не знаю, с чего начать с этого?

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

Изменить

Благодаря ответу DaveB я нашел обсуждение чего-то, что называется DocumentPersister. Однако ссылку на этот класс нельзя найти в документации MSDN, и я не могу найти его в установленных dll с помощью поиска в браузере объектов. Кто-нибудь, хоть кто-нибудь?


person AnthonyWJones    schedule 20.01.2010    source источник
comment
@Anthony - я отредактировал свой ответ, чтобы указать, где вы можете найти класс DocumentPersister.   -  person DaveB    schedule 21.01.2010


Ответы (5)


Ознакомьтесь с этим руководством по элементу управления RichTextArea. Сохранение содержимого описано в упражнении 2, задача 3. Код учебного пособия включает вспомогательный класс.

Изменить: был поднят вопрос о классе DocumentPersister, упомянутом в руководстве. Его можно найти в исходном коде для учебника. Думаю, автор создал. Посмотрев на код, вы получите представление о сохранении ваших данных. Единственным недостатком было то, что если ваши данные содержали изображения, вспомогательный класс их не поддерживал. Вот ссылка на скачивание.

http://ecn.channel9.msdn.com/o9/learn/Silverlight4/Labs/TextEditor/Source.zip

person DaveB    schedule 20.01.2010
comment
Спасибо, Дэйв, это шаг в правильном направлении, если бы я только мог найти этот DocumentPersister, о котором говорится в этой статье. - person AnthonyWJones; 21.01.2010
comment
Спасибо, поэтому ответ - Silverlight 4 в его текущей бета-форме не предоставляет средств для загрузки или сохранения содержимого RichTextArea, нужно прибегать к написанию его самому или загрузке какого-либо источника от кого-то другого. Я очень надеюсь, что они разберутся с этим по времени RC. - person AnthonyWJones; 21.01.2010
comment
В этом примере есть ошибка (если она не была недавно исправлена), когда TextDecorations не сохраняются - что в silverlight просто подчеркивается. У меня есть руководство по адресу cespage.com/silverlight/sl4tut14.html, которое содержит исправление этого (в VB) для сохранения параметра TextDecorations, что должно быть возможно для исправления упомянутой здесь версии C #. - person RoguePlanetoid; 21.01.2010

Чтобы обновить ссылку в принятом ответе, она перемещена сюда: http://channel9.msdn.com/learn/courses/Silverlight4/NewFeatures/RichTextBox/Introduction/

person pho79    schedule 04.06.2010

Будьте осторожны, вкладывая слишком много средств в Silverlight 4 RichTextArea, пока не будет подтверждено, что он будет поддерживать полную функциональность RichEdit, такую ​​как маркеры / списки и т. Д., Которые он сейчас делает в SL Beta 1 ... хотя я уверен, что это будет в RTM?

person Mike Stokes    schedule 21.01.2010
comment
Это хорошо, что RichTextArea все еще находится в бета-версии - у меня была проблема, которая, по словам группы разработчиков Silverlight, решена в выпуске RM. По крайней мере, он будет поддерживать то, что есть на данный момент, и, надеюсь, добавит больше, но это будет неизвестно. MIX2010 состоится в марте, где будут, по крайней мере, упомянуты любые подробности о полном выпуске - если не подтверждены, включая функции RichTextArea, примеры и т. Д. - person RoguePlanetoid; 22.01.2010

У меня есть образец от Microsoft, чтобы сохранить содержимое, которое мне нужно найти, и я займусь им завтра. Я получил этот образец в октябре, когда о бета-версии 4 даже не было объявлено, из-за чего не было доступных руководств. После этого проекта я не работал над Silverlight, поэтому я не знаю, сколько уроков доступно сейчас.

хорошо, я нашел это. Куда мне его загрузить?

person Haris    schedule 18.02.2010

Один из вариантов загрузки текста в RichTextBox - использовать XamlReader. В зависимости от текста, который вы планируете загрузить, вам может потребоваться добавить вокруг него тег.

public class TextToXamlConverter
{
    private const String ParaHead = "<Paragraph xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\" xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\">";
    private const String ParaTail = "</Paragraph>";

    static public Paragraph Convert(string text)
    {
        String formattedText = ParaHead + text + ParaTail;
        Paragraph p = (Paragraph)XamlReader.Load(formattedText);
        return p;
    }
}
person AlexEzh    schedule 25.07.2010