Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将.rtf文件导入silverlight 4 richtextbox?_C#_Silverlight_Silverlight 4.0_Richtextbox - Fatal编程技术网

C# 如何将.rtf文件导入silverlight 4 richtextbox?

C# 如何将.rtf文件导入silverlight 4 richtextbox?,c#,silverlight,silverlight-4.0,richtextbox,C#,Silverlight,Silverlight 4.0,Richtextbox,我有一个.rtf文件,想把它放在silverlight 4的richtextbox中。不幸的是,silverlight 4 richtextbox中没有.rtf属性,只有.xaml 因此,我所做的是创建一个FlowDocument,然后将.rtf加载到此FlowDocument,然后将其格式化为xaml。然后将其分配给richtextbox。但我有个例外 如何将.rtf文件导入silverlight 4 richtextbox 谢谢 到目前为止,我使用了一个难看的解决方案,使用FlowDocum

我有一个.rtf文件,想把它放在silverlight 4的richtextbox中。不幸的是,silverlight 4 richtextbox中没有.rtf属性,只有.xaml

因此,我所做的是创建一个FlowDocument,然后将.rtf加载到此FlowDocument,然后将其格式化为xaml。然后将其分配给richtextbox。但我有个例外

如何将.rtf文件导入silverlight 4 richtextbox


谢谢

到目前为止,我使用了一个难看的解决方案,使用FlowDocument将格式从rtf更改为xaml。然后删除SL4文本框中不接受的属性,代码如下。这很有效,但我讨厌它。 我想知道有没有更好的解决办法

        string xaml = String.Empty;
        FlowDocument doc = new FlowDocument();
        TextRange range = new TextRange(doc.ContentStart, doc.ContentEnd);

        using (MemoryStream ms = new MemoryStream())
        {
            using(StreamWriter sw = new StreamWriter(ms))
            {
                sw.Write(from);
                sw.Flush();
                ms.Seek(0, SeekOrigin.Begin);
                range.Load(ms, DataFormats.Rtf);
            }
        }


        using(MemoryStream ms = new MemoryStream())
        {
            range = new TextRange(doc.ContentStart, doc.ContentEnd);

            range.Save(ms, DataFormats.Xaml);
            ms.Seek(0, SeekOrigin.Begin);
            using (StreamReader sr = new StreamReader(ms))
            {
                xaml = sr.ReadToEnd();
            }
        }

        // remove all attribuites in section and remove attribute margin 

        int start = xaml.IndexOf("<Section");
        int stop = xaml.IndexOf(">") + 1;

        string section = xaml.Substring(start, stop);

        xaml = xaml.Replace(section, "<Section xml:space=\"preserve\" HasTrailingParagraphBreakOnPaste=\"False\" xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\">");
        xaml = xaml.Replace("Margin=\"0,0,0,0\"", String.Empty);
string xaml=string.Empty;
FlowDocument文档=新的FlowDocument();
text范围=新的text范围(doc.ContentStart,doc.ContentEnd);
使用(MemoryStream ms=new MemoryStream())
{
使用(StreamWriter sw=新StreamWriter(ms))
{
sw.Write(来自);
sw.Flush();
Seek女士(0,SeekOrigin.Begin);
加载范围(ms,DataFormats.Rtf);
}
}
使用(MemoryStream ms=new MemoryStream())
{
范围=新文本范围(doc.ContentStart、doc.ContentEnd);
Save(ms,DataFormats.Xaml);
Seek女士(0,SeekOrigin.Begin);
使用(StreamReader sr=新StreamReader(ms))
{
xaml=sr.ReadToEnd();
}
}
//删除节中的所有属性并删除属性边距
int start=xaml.IndexOf(“”+1;
字符串段=xaml.Substring(开始、停止);
xaml=xaml。替换(第节“”);
xaml=xaml.Replace(“边距=\“0,0,0,0\”,String.Empty);

到目前为止,我使用了一个难看的解决方案,使用FlowDocument将格式从rtf更改为xaml。然后删除SL4文本框中不接受的属性,代码如下。这很有效,但我讨厌它。 我想知道有没有更好的解决办法

        string xaml = String.Empty;
        FlowDocument doc = new FlowDocument();
        TextRange range = new TextRange(doc.ContentStart, doc.ContentEnd);

        using (MemoryStream ms = new MemoryStream())
        {
            using(StreamWriter sw = new StreamWriter(ms))
            {
                sw.Write(from);
                sw.Flush();
                ms.Seek(0, SeekOrigin.Begin);
                range.Load(ms, DataFormats.Rtf);
            }
        }


        using(MemoryStream ms = new MemoryStream())
        {
            range = new TextRange(doc.ContentStart, doc.ContentEnd);

            range.Save(ms, DataFormats.Xaml);
            ms.Seek(0, SeekOrigin.Begin);
            using (StreamReader sr = new StreamReader(ms))
            {
                xaml = sr.ReadToEnd();
            }
        }

        // remove all attribuites in section and remove attribute margin 

        int start = xaml.IndexOf("<Section");
        int stop = xaml.IndexOf(">") + 1;

        string section = xaml.Substring(start, stop);

        xaml = xaml.Replace(section, "<Section xml:space=\"preserve\" HasTrailingParagraphBreakOnPaste=\"False\" xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\">");
        xaml = xaml.Replace("Margin=\"0,0,0,0\"", String.Empty);
string xaml=string.Empty;
FlowDocument文档=新的FlowDocument();
text范围=新的text范围(doc.ContentStart,doc.ContentEnd);
使用(MemoryStream ms=new MemoryStream())
{
使用(StreamWriter sw=新StreamWriter(ms))
{
sw.Write(来自);
sw.Flush();
Seek女士(0,SeekOrigin.Begin);
加载范围(ms,DataFormats.Rtf);
}
}
使用(MemoryStream ms=new MemoryStream())
{
范围=新文本范围(doc.ContentStart、doc.ContentEnd);
Save(ms,DataFormats.Xaml);
Seek女士(0,SeekOrigin.Begin);
使用(StreamReader sr=新StreamReader(ms))
{
xaml=sr.ReadToEnd();
}
}
//删除节中的所有属性并删除属性边距
int start=xaml.IndexOf(“”+1;
字符串段=xaml.Substring(开始、停止);
xaml=xaml。替换(第节“”);
xaml=xaml.Replace(“边距=\“0,0,0,0\”,String.Empty);

我建议你看看自由控件。

我建议你看看自由控件。

我需要做一些类似的事情(还没有做过…)

我遇到了一个C#RTF解析器,它应该移植到silverlight。


我需要做类似的事情(还没有做过…)

我遇到了一个C#RTF解析器,它应该移植到silverlight。


嗯。。。看到Silverlight根本不支持Flowdocument,这有点让人困惑。是的,你是对的。Silverlight不支持Flowdocument,我所做的是在Web服务中使用Flowdocument,然后Silverlight可以与Web服务对话。。。看到Silverlight根本不支持Flowdocument,这有点让人困惑。是的,你是对的。Silverlight不支持Flowdocument,我所做的是在Web服务中使用Flowdocument,然后Silverlight可以与Web服务对话我检查了vectorlight richtextbox的api,似乎不直接支持rtf。哦,是的,vectorlight只使用XML richtext格式,而不是rtf。名称相似,但格式不同。我检查了vectorlight richtextbox的api,似乎不直接支持rtf。哦,是的,vectorlight只使用XML richtext格式,而不是rtf。名称相似,但格式不同。