У меня есть приложение с RichTextBox и DocumentViewer (размещено в TabControl), и я хочу сделать что-то вроде «горячего предварительного просмотра». Я переплетены DocumentViewer.Document
свойство RichTextBox.Document
Ошибка DocumentViewer для RichTextBox
Переплет:
<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. Приложение подавляет, и я получаю такой Исключение:
Невозможно выполнить операцию чтения в режиме только для записи.
Что я делаю неправильно? Можно ли сделать это связывание?
Обновлен с образцом кода как и было обещано. – Dennis
Если вы ищете волшебство за «ForceRenderFlowDocument», оно доступно в этом ответе StackOverflow. http://stackoverflow.com/questions/9447338/printing-blockuicontainer-to-xpsdocument-fixeddocument – Dennis