Переход к определенному фрагменту в потоке документа из кода позади - PullRequest
0 голосов
/ 02 февраля 2010

У меня есть страница WPF, используемая в качестве формы ввода, которая содержит несколько элементов управления с одной стороны и средство чтения потоковых документов с другой.

Я хочу установить для содержимого этого устройства чтения документов определенную часть потокового документа, которая загружается при загрузке формы (через загруженное событие).

Я нашелстатья, объясняющая, как это сделать, используя фрагменты, но показанные примеры выражены только в XAML.

В моем случае мне нужно обновить свойство документа средства чтения потоковых документов, когда пользователь выделяет один элемент управления(Я уже связал события), поэтому мне нужно сделать это в коде, а не в XAML.

Я попытался установить для свойства документа значение:

Document#Control_Sport

где Document isимя документа потока XAML, а Control_Sport - это имя фрагмента, к которому мне нужно перейти.

Однако это выдает ошибку, ему не нравится наличие знака хеша.

Iпопытался посмотреть на MSDN, но только на XAML.Есть ли способ, которым я могу сделать это через код?

Любая помощь будет признательна.

Феликс,

Ссылка на статью MSDN: http://msdn.microsoft.com/en-us/library/ms750478.aspx#FragmentNavigation

Ответы [ 2 ]

1 голос
/ 29 октября 2013

Сначала создайте объект Frame внутри объекта Page или Window. Если для свойства JournalOwnership установлено значение "OwnsJournal", документ будет иметь собственную панель навигации (стрелки вперед и назад и история). Возможно, вам потребуется добавить дополнительные параметры для размера и найти рамку в вашем документе, но я не включил их в свой пример, так как не знаю, что требуется вашему приложению:

<Frame Name="MyFrame" JournalOwnership="OwnsJournal" />

Затем создайте URI пакета для вашего фрагмента документа. Предполагается, что этот документ находится в том же каталоге, что и исполняемый файл приложения; вам нужно будет добавить больше к пути, чтобы перейти к каталогу, в котором находится документ в вашем проекте:

Uri MyUri = new Uri("pack://application:,,,/MyXamlDocument.xaml#MyFragment");

Затем перейдите к нему из обработчика Click вашей кнопки или любым другим способом, которым вы хотите инициировать навигацию:

MyFrame.Navigate(MyUri);
1 голос
/ 02 февраля 2010

Вы можете перейти к любому Block в пределах FlowDocument, вызвав Block.BringIntoView.

...