RichTextBox と DocumentViewer (TabControl に配置) を備えたアプリケーションがあり、「ホット プレビュー」のようなものを作成したいと考えています。DocumentViewer.Document
プロパティをバインドしましたRichTextBox.Document
バインディング:
<DocumentViewer Document="{Binding Document, Converter={StaticResource FlowDocumentToPaginatorConverter}, ElementName=mainRTB, Mode=OneWay}" />
そして、これはコンバーターのコードです:
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
FlowDocument d = value as FlowDocument;
DocumentPaginator pagin = ((IDocumentPaginatorSource)d).DocumentPaginator;
FixedDocumentSequence result = null;
Size s = new Size(793.700787402, 1122.519685039);
pagin.PageSize = s;
using (MemoryStream ms = new MemoryStream())
{
TextRange tr = new TextRange(d.ContentStart, d.ContentEnd);
tr.Save(ms, DataFormats.XamlPackage);
Package p = Package.Open(ms, FileMode.Create, FileAccess.ReadWrite);
Uri uri = new Uri(@"memorystream://doc.xps");
PackageStore.AddPackage(uri, p);
XpsDocument xpsDoc = new XpsDocument(p);
xpsDoc.Uri = uri;
XpsDocument.CreateXpsDocumentWriter(xpsDoc).Write(pagin);
result = xpsDoc.GetFixedDocumentSequence();
}
return result;
}
このアプリケーションを起動すると、DocumentViewer でタブに切り替えるまですべて問題ありません。アプリケーションがクラッシュし、次のような例外が発生します:
書き込み専用モードでは読み取り操作を実行できません。
私が間違っていることは何ですか?このバインディングを作成することは可能ですか?