2010-01-20 77 views
1

我一直在评论Silverlight 4中RichTextBox控件的功能。如何加载和保存Silverlight 4 RichTextBox控件的内容?

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

人碰到任何或可以在其上提供一些线索?

该控件有一个BlocksCollection,我猜测可以使用XamlReader加载一堆标记,假设标记有一个Block类型的单个顶级节点。然后将该块添加到Blocks集合。似乎很遗憾RichTextBox在这种情况下有一个“集合”,为什么不简单地只是一个顶级Block项目?

决不最小于仍有保存RichTextBox中的内容,我不知道从哪里开始与那一个?

我敢肯定,我必须在这里失去了明显的,但除非装载在往返RichTextBox中保存数据至少是可能的,如果不容易,我不能看看我们如何能够真正把它用。

编辑

由于DaveB的答案,我发现了一些讨论,叫做DocumentPersister。但是,在MSDN文档中不能找到此类的引用,也不能通过对象浏览器搜索在安装的dll中找到它。任何人,任何人?

+0

@Anthony - 我编辑了我的答案,其中包含您可以在哪里找到DocumentPersister类。 – DaveB 2010-01-21 00:16:14

回答

2

看看这个tutorial 在RichTextArea控制。持续性内容在练习2,任务3中进行了描述。本教程的代码包含一个辅助类。

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

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

+0

感谢戴夫这是朝着正确的方向迈出的一步,现在如果我真的可以找到本文所说的这个DocumentPersister。 – AnthonyWJones 2010-01-20 22:38:25

+0

谢谢,所以答案是Silverlight 4在它的当前Beta版本中没有提供加载或保存“RichTextArea内容”的方法,必须自己写它或者从其他人处下载一些源代码。我确实希望他们在RC时间排序。 – AnthonyWJones 2010-01-21 08:49:24

+0

该示例中存在一个错误(除非最近已更正)TextDecorations未保存 - Silverlight中的仅为下划线。 我有一个教程在http://cespage.com/silverlight/sl4tut14.html其中包含一个修正(在VB中)用于保存TextDecorations设置,它应该有可能推断这里提到的C#版本的修正。 – RoguePlanetoid 2010-01-21 12:55:28

1

警惕在Silverlight 4中RichTextArea投资太多,直到它的证实,它将支持项目符号点/列表等,它目前并在SL Beta 1中完整的RichEdit功能......虽然我我确定它会在RTM?

+1

RichTextArea仍处于测试阶段 - 我遇到了Silverlight产品团队表示已在RM版本中解决的问题。它至少会支持目前的状况,并有望增加更多 - 但这是未知的。 MIX2010在3月份,至少会提到关于完整版本的任何细节 - 如果没有确认,包括RichTextArea特性,例子等。 – RoguePlanetoid 2010-01-22 10:47:18

0

我从微软的样品依然存在,我一定要找到我明天会做的内容。我在10月份得到这个样本时,测试版4甚至没有宣布,因为没有教程可用。自那个项目以来,我一直没有Silverlight的工作,所以我不知道现在有多少教程可用。

好,我已经找到了。我应该在哪里上传?

0

一个加载文本选项到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; 
    } 
} 
相关问题