Marius Ionut Ответов: 0

Рамка не переходит в закладку средства просмотра документов


У меня есть этот код, где я создаю XPS-документ и устанавливаю его в Средство просмотра документов, также Средство просмотра документов находится во фрейме, который позволяет мне перемещаться внутри средства просмотра к определенной закладке(согласно этой ссылке).

var fixedDocument = ...XPS document logic here...;

// Set up fresh XpsDocument
var stream = new MemoryStream();
var uri = new Uri("pack://document.xps", UriKind.Absolute);
var package = Package.Open(stream, FileMode.Create, FileAccess.ReadWrite);
PackageStore.AddPackage(uri, package);
var xpsDoc = new XpsDocument(package, CompressionOption.NotCompressed, uri.AbsoluteUri);

// Write FixedDocument to the XpsDocument
var docWriter = XpsDocument.CreateXpsDocumentWriter(xpsDoc);
docWriter.Write(fixedDocument);

FixedDocumentSequence document = xpsDoc.GetFixedDocumentSequence();

viewer.DocFrame.Source = ((System.Windows.Markup.IUriContext)document).BaseUri;
// Display XpsDocument in DocumentViewer
viewer.Preview.Viewer.Document = xpsDoc.GetFixedDocumentSequence();
DocFrame.Source is correct "pack://pack:,,document.xps,/FixedDocumentSequence.fdseq"


Проблема заключается в том, что я пытаюсь перейти к определенной закладке в документе, например

var uri = new Uri("pack://pack:,,document.xps,/FixedDocumentSequence.fdseq#asd");
DocFrame.Navigate(uri);

Я получаю сообщение об ошибке " идентификатор приложения не установлен." Создается новый просмотрщик документов, но точка визуализации находится на самой верхней странице (по умолчанию), что означает, что она вообще не перемещается.

Что я уже пробовал:

var fixedDocument = ...XPS document logic here...;

// Set up fresh XpsDocument
var stream = new MemoryStream();
var uri = new Uri("pack://document.xps", UriKind.Absolute);
var package = Package.Open(stream, FileMode.Create, FileAccess.ReadWrite);
PackageStore.AddPackage(uri, package);
var xpsDoc = new XpsDocument(package, CompressionOption.NotCompressed, uri.AbsoluteUri);

// Write FixedDocument to the XpsDocument
var docWriter = XpsDocument.CreateXpsDocumentWriter(xpsDoc);
docWriter.Write(fixedDocument);

FixedDocumentSequence document = xpsDoc.GetFixedDocumentSequence();

viewer.DocFrame.Source = ((System.Windows.Markup.IUriContext)document).BaseUri;
// Display XpsDocument in DocumentViewer
viewer.Preview.Viewer.Document = xpsDoc.GetFixedDocumentSequence();
DocFrame.Source is correct "pack://pack:,,document.xps,/FixedDocumentSequence.fdseq"

0 Ответов