代码之家  ›  专栏  ›  技术社区  ›  AnthonyWJones

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

  •  1
  • AnthonyWJones  · 技术社区  · 15 年前

    我一直在回顾Silverlight4中RichTextBox控件的功能。

    我还没有找到在richtextbox中加载和保存内容的任何示例。

    有人碰到过或者能给它点启发吗?

    控件有一个BlocksCollection,我想可以在其中使用 XamlReader 假设标记有一个类型为的顶级节点,加载一组标记 Block . 然后将该块添加到“块”集合中。在这种情况下,RichTextBox为拥有一个“集合”而烦恼,这似乎是一种耻辱,为什么不只是一个顶级的呢? 街区 项目?

    保存richtextbox的内容的方式从来没有减少过,我不知道从哪里开始?

    我确信我这里肯定遗漏了显而易见的内容,但是除非在RichTextBox中加载和保存数据至少是可能的,如果不容易的话,我看不到我们如何实际地使用它。

    编辑

    多亏了戴夫的回答,我找到了一个叫做 DocumentPersister . 但是,在msdn文档中找不到对此类的引用,也无法通过对象浏览器搜索在已安装的dll中找到它。任何人,任何人?

    5 回复  |  直到 14 年前
        1
  •  2
  •   DaveB    15 年前

    看看这个 tutorial 在richtextarea控件上。坚持的内容在练习2,任务3中描述。教程的代码包括一个助手类。

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

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

        2
  •  2
  •   pho79    14 年前

    只需更新已接受答案中的链接,即可将其移至此处: http://channel9.msdn.com/learn/courses/Silverlight4/NewFeatures/RichTextBox/Introduction/

        3
  •  1
  •   Mike Stokes    15 年前

    在确认Silverlight4 RichTextArea将支持完整的RichEdit功能(如项目符号点/列表等)之前,请注意不要在Silverlight 4 RichTextArea上投入太多资金,因为它目前在SL Beta 1中实现了这些功能…虽然我相信它会在RTM中?

        4
  •  0
  •   Haris    14 年前

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

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

        5
  •  0
  •   AlexEzh    14 年前

    将文本加载到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;
        }
    }