2016-12-06 8 views
2

WPFでは、RichTextBoxを作成して、選択したテキスト(太字、線引き、フォントなど)をフォーマットできるように機能を実装しましたが、今はすべての書式をXMLファイルにエクスポートするので、ロードすると同じ書式のテキストがロードされます。 RTBに書式設定されている各場所を見つけてテキスト範囲として保存できるのであれば、これを行うには最良の方法だと思いますが、RTBにテキストがフォーマットされます。ここでcp wpf xmlドキュメントにRichTextBoxを書き出す

は私が持っているものです: XAML:

<Button Name = "export" Click = "export_Click"/> 
<RichTextBox x:Name="RTB"/> 

とC#:助けて喜んで誰にも事前に

private void export_Click(object sender, RoutedEventArgs e){ 
    TextRange range = new TextRange(); 
    //here is where i want to access the formatted areas 
    //something like: range = RTB.document.getBoldArea(); 
    //and then i could export what i got in the text range to a xml file 
} 

感謝!

答えて

2

実際にXAMLコンテンツに直接アクセスすることができます。これは明らかにXMLです。これを直接保存することも、独自のスキーマに操作/変換することもできます。

は、リッチテキストボックスのためにXAMLを取得するには:

static string GetXaml(RichTextBox rt) 
{ 
    TextRange range = new TextRange(rt.Document.ContentStart, rt.Document.ContentEnd); 
    MemoryStream stream = new MemoryStream(); 
    range.Save(stream, DataFormats.Xaml); 
    string xamlText = Encoding.UTF8.GetString(stream.ToArray()); 
    return xamlText; 
} 

は、リッチテキストボックスのためにXAMLのコンテンツを設定するには:助けを

static void SetXaml(RichTextBox rt, string xamlString) 
{ 
    StringReader stringReader = new StringReader(xamlString); 
    XmlReader xmlReader = XmlReader.Create(stringReader); 
    Section sec = XamlReader.Load(xmlReader) as Section; 
    FlowDocument doc = new FlowDocument(); 
    while (sec.Blocks.Count > 0) 
     doc.Blocks.Add(sec.Blocks.FirstBlock); 
    rt.Document = doc; 
} 
+0

感謝を!魅力のように働く:D –

関連する問題