如何从Silverlight 4 RichTextBox控件加载和保存内容?

如何从Silverlight 4 RichTextBox控件加载和保存内容?,silverlight,silverlight-4.0,richtextbox,Silverlight,Silverlight 4.0,Richtextbox,我一直在回顾Silverlight 4中RichTextBox控件的功能 我还没有找到在RichTextBox中加载和保存内容的示例 任何人遇到任何问题,或能对此有所了解 控件有一个BlocksCollection,我想可以使用XamlReader加载一组标记,假设标记有一个类型为Block的顶级节点。然后将该块添加到“块”集合。RichTextBox不厌其烦地拥有一个“集合”,这似乎是一个遗憾。在这种情况下,为什么不简单地使用顶级块项呢 无论如何,保存RichTextBox的内容仍然是一个问题

我一直在回顾Silverlight 4中RichTextBox控件的功能

我还没有找到在RichTextBox中加载和保存内容的示例

任何人遇到任何问题,或能对此有所了解

控件有一个BlocksCollection,我想可以使用
XamlReader
加载一组标记,假设标记有一个类型为
Block
的顶级节点。然后将该块添加到“块”集合。RichTextBox不厌其烦地拥有一个“集合”,这似乎是一个遗憾。在这种情况下,为什么不简单地使用顶级
项呢

无论如何,保存RichTextBox的内容仍然是一个问题,我不知道从哪里开始

我确信我一定错过了这里显而易见的东西,但除非在RichTextBox中加载和保存数据即使不容易,至少也是可能的,否则我看不出我们如何实际使用它

编辑

多亏了DaveB的回答,我找到了一个叫做
DocumentPersister
的讨论。但是,在MSDN文档中找不到此类的引用,也无法通过对象浏览器搜索在已安装的DLL中找到此类。有人吗,有人吗?

看看这个 在RichTextArea控件上。练习2任务3中描述了持久化内容。本教程的代码包括一个帮助器类

编辑: 有人提出了关于本教程中引用的
DocumentPersister
类的问题。可以在教程的源代码下载中找到它。我认为是作者创造的。通过查看代码,您将了解如何持久化数据。唯一的缺点是,如果数据包含图像,则helper类不支持它们。这里是下载的链接

看看这个 在RichTextArea控件上。练习2任务3中描述了持久化内容。本教程的代码包括一个帮助器类

编辑: 有人提出了关于本教程中引用的
DocumentPersister
类的问题。可以在教程的源代码下载中找到它。我认为是作者创造的。通过查看代码,您将了解如何持久化数据。唯一的缺点是,如果数据包含图像,则helper类不支持它们。这里是下载的链接


在Silverlight 4 RichTextArea被确认将支持完整的RichEdit功能(如项目符号/列表等)之前,请小心不要在该领域投入过多资金,因为它目前在SL Beta 1中已经实现了这一功能。。。尽管我确信它会在RTM中出现?

但在Silverlight 4 RichTextArea被确认将支持完整的RichEdit功能(如项目符号/列表等)之前,请注意不要在该领域投入过多资金,因为它目前在SL Beta 1中已经实现了这一功能。。。虽然我确信RTM中会有,但我有一个来自微软的样本来保存我必须找到的内容,我明天会做这些。我是在10月份得到这个样本的,当时beta 4甚至还没有发布,因为没有可用的教程。因为那个项目我还没有在silverlight上工作过,所以我不知道现在有多少教程可用


好的,我找到了。我应该把它上传到哪里?

我有一个来自微软的样本来保存我必须找到的内容,我明天会做这些。我是在10月份得到这个样本的,当时beta 4甚至还没有发布,因为没有可用的教程。因为那个项目我还没有在silverlight上工作过,所以我不知道现在有多少教程可用


好的,我找到了。我应该上传到哪里?

只需更新已接受答案中的链接,它已移动到此处:

为了更新已接受答案中的链接,将其移动到此处:
将文本加载到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;
    }
}
公共类文本转换器
{
private const String ParaHead=“”;
private const String ParaTail=“”;
静态公共段落转换(字符串文本)
{
字符串formattedText=ParaHead+text+ParaTail;
段落p=(段落)XamlReader.Load(格式化文本);
返回p;
}
}

将文本加载到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;
    }
}
公共类文本转换器
{
private const String ParaHead=“”;
private const String ParaTail=“”;
静态公共段落转换(字符串文本)
{
字符串formattedText=ParaHead+text+ParaTail;
段落p=(段落)XamlReader.Load(格式化文本);
返回p;
}
}

谢谢Dave这是朝着正确方向迈出的一步,如果我真的能找到这篇文章提到的DocumentPersister就好了。谢谢,所以答案是Silverlight 4在其当前的测试版中无法加载或保存“RichTextArea内容”,只能靠自己编写或从其他人下载某些源代码。我真的希望他们能按RC时间来分类。在这个例子中有一个错误(除非最近已经纠正),文本装饰没有保存,在silverlight中只是下划线。我有一个教程,其中包含了一个关于保存TextEditions设置的更正(在VB中),应该可以推断出这里提到的C版本的更正。谢谢Dave,这是朝着正确方向迈出的一步,现在只要我能找到本文提到的DocumentPersister就好了。谢谢,所以答案是Silverlight 4目前的测试版无法加载或保存“RichTextArea内容”,只能自己编写或从其他人下载。我真希望他们能在RC时间前解决这个问题