从后面的代码导航到流文档中的特定片段

时间:2010-02-01 22:23:36

标签: c# wpf wpf-controls flowdocument

我有一个WPF页面用作输入表单,其中一侧包含许多控件,另一侧包含一个流文档阅读器。

我想将此文档阅读器的内容设置为加载表单时加载的流文档的特定部分(通过加载的事件)。

我发现了一篇文章,解释了如何使用片段,但所示的示例仅以XAML表示。

在我的情况下,当用户将焦点放在控件上时,我需要更新流文档阅读器的文档属性(我已经连接了事件),因此我需要在后面的代码而不是XAML中执行此操作。

我已尝试将document属性设置为:

Document#Control_Sport

其中Document是XAML流文档的名称,Control_Sport是我需要导航到的片段的名称。

但是这会产生错误,它不喜欢那里的哈希符号。

我试过在MSDN上查看但仅限于XAML。有没有办法通过代码来实现这个目标?

任何帮助都将不胜感激。

菲利克斯,

链接到MSDN文章:http://msdn.microsoft.com/en-us/library/ms750478.aspx#FragmentNavigation

2 个答案:

答案 0 :(得分:1)

您可以致电Block导航至FlowDocument中的任何Block.BringIntoView

答案 1 :(得分:1)

首先,在Page或Window对象中创建一个Frame对象。将JournalOwnership属性设置为"OwnsJournal"将为文档提供自己的导航栏(向前和向后箭头以及历史记录)。您可能需要添加其他参数来调整大小并在文档中找到框架,但我没有将它们包含在我的示例中,因为我不知道您的应用程序需要什么:

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

然后,为文档片段创建包URI。假定该文档与应用程序的可执行文件位于同一目录中;您需要在路径中添加更多内容以导航到文档所在的目录:

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

然后,从按钮的Click处理程序或您想要启动导航的其他任何方式导航到它:

MyFrame.Navigate(MyUri);