Я сделал два richtexbox, один маленький richtexbox, вложенный в большой richtextbox с помощью BlockUIContainer, см. В файле XAML ниже.Как сохранить содержимое RichTextBox в BlockUIContainer, в файл RTF?
<RichTextBox IsDocumentEnabled="True" x:Name="first" HorizontalAlignment="Left" Height="174" Margin="120,136,0,0" VerticalAlignment="Top" Width="254" TextChanged="first_TextChanged" MouseDoubleClick="first_MouseDoubleClick">
<FlowDocument>
<Paragraph>
<Run Text="RichTextBox"/>
</Paragraph>
<BlockUIContainer>
<RichTextBox IsReadOnly="True" x:Name="second" MouseDoubleClick="second_MouseDoubleClick" Width="239" TextChanged="second_TextChanged">
<FlowDocument>
<Paragraph>
<Run Text="RichTextBox1"/>
<Run Language="en" Text="hh"/>
</Paragraph>
</FlowDocument>
</RichTextBox>
</BlockUIContainer>
</FlowDocument>
</RichTextBox>
Я хочу, чтобы содержимое richtexbox сохранялось в RTF-файле. Обычно мы можем использовать TextRange (richTextBox.Document.ContentStart, richTextBox.Document.ContentEnd), так как теперь у нас есть вложенный richtexbox, поэтому я думаю, что TextRange, вероятно, не работает. И, возможно, я добавлю некоторые изображения в richtextbox, поэтому я хочу попробовать двоичный поток, см. Ниже. «first» - это имя большого richtextbox. ПУТЬ - это путь к файлу RTF.
FlowDocument document = first.Document;
System.IO.Stream ms = new System.IO.MemoryStream();
System.Windows.Markup.XamlWriter.Save(document, ms);
byte[] data = new byte[ms.Length];
ms.Position = 0;
ms.Read(data, 0, data.Length);
ms.Close();
File.WriteAllBytes(THE PATH, data);
Но в сохраненный файл RTF, когда я открываю его, он показывает, как это,
<FlowDocument PagePadding="5,0,5,0" AllowDrop="True" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"> <Paragraph>RichTextBox</Paragraph><Paragraph><Run xml:lang="en">test test test!!!</Run></Paragraph><BlockUIContainer><RichTextBox IsReadOnly="True" Name="second" Width="239"><FlowDocument PagePadding="5,0,5,0" AllowDrop="True"><Paragraph>RichTextBox1<Run xml:space="preserve"> </Run><Run xml:lang="en">hhthis is a small richtextbox</Run></Paragraph><Paragraph><Run xml:lang="en" xml:space="preserve" /></Paragraph></FlowDocument></RichTextBox></BlockUIContainer></FlowDocument>
Я не хочу видеть XAML простой текст в сохраненном файле, я хочу его показать как нормальный документ слова, см. ниже. и, вероятно, также видят линию границы малого RichTextBox (эта граница оленья кожа будет показано ниже)
RichTextBox
test test test!!!
RichTextBox1 hhthis is a small richtextbox
Что я должен делать? или вложенный richtextbox от BlockUIContainer невозможно показать так?
Благодаря LLL, используя DataFormats.Rtf, текст большой RichTextBox показан в файле, но маленький RichTextBox полностью исчез. Я думаю, что, возможно, этот способ не может обрабатывать вещи внутри BlockUIContainer ... XamlWriter может хранить вещи внутри BlockUIContainer, но я не знаю, как сделать поток правильно отображаемым в сохраненном файле ... – user3339999
Почему бы вам не захватить Документ Richtextbox, получить блок, затем удалить BlockUIContainer и прочитать его в Flowdocument –