NavigationService 类

定义

包含支持导航的各种方法、属性和事件。

public ref class NavigationService sealed
public sealed class NavigationService
type NavigationService = class
Public NotInheritable Class NavigationService
继承
NavigationService

注解

NavigationService 封装在浏览器样式导航的上下文中下载内容的功能。

内容可以是任何类型的.NET Framework对象和 HTML 文件。 但是,通常首选页面作为打包内容以供导航的方式, (查看 Page) 。

可以通过提供 对象的实例并调用接受 对象的 方法的 Navigate 重载来导航到内容:

或者,可以通过将相对 URI 或绝对 URI 传递给接受 URI 的方法重载之 Navigate 一来导航到内容:

当通过 URI 导航到内容时, NavigationService 将返回一个包含该内容的对象。

可以通过以下事件跟踪导航的生存期:

并非每次发生导航时都会引发所有事件;引发的事件集由 (内容或内容片段) 发生的导航类型以及导航完成 (取消、停止或失败) 的方式决定。

下图演示了引发这些事件的顺序:

页面导航流程图

在导航期间或之后, NavigationService 提供有关要导航到的内容的信息,包括导航到 (Source) 的内容的 URI、当前内容 (CurrentSource) 的 URI,以及包含导航到 (Content) 的内容的对象。

导航到内容时, NavigationService 会将导航记录为导航历史记录中的条目。 当发生新导航时,通过调用 方法或通过调用 Navigate 导航到前进导航历史记录中的条目,将条目添加到后退导航历史记录 GoForward。 通过调用 GoBack导航到后退导航历史记录中的条目,添加一个条目以转发导航历史记录。 CanGoBackCanGoForward 分别报告后向导航历史记录和前进导航历史记录中是否有条目。 此外,可以通过调用 RemoveBackEntry来删除后退导航历史记录中的最新条目。

默认情况下, NavigationService 不会在导航历史记录中存储内容对象的实例。 NavigationService而是在每次使用导航历史记录导航到内容对象时创建一个新实例。 此行为旨在避免在导航到大量内容和大量内容时过度消耗内存。 因此,从一个导航到另一个导航,内容的状态不会被记住。 但是,WPF 提供了多种技术,通过这些技术,你可以在导航历史记录中存储一段内容的状态。

使用 AddBackEntry,还可以记住单个页面实例的多个状态集。

NavigationService 是类 sealed ,因此无法实例化;而是 NavigationService 由导航器用来启用导航。 在 WPF 中,有两个导航器: NavigationWindowFrame

从视觉上看,XBAP 使用 Internet Explorer 作为导航器,以提供集成的用户体验。 但是,在物理上,XBAP 实际上使用 NavigationWindow 作为导航器; MainWindow 在 Internet Explorer 中运行的 XBAP 的 属性将返回对 NavigationWindow的引用,由 NavigationWindow 管理的导航历史记录与由 Internet Explorer 管理的导航历史记录集成在一起,方式如下:

  • 通过从 XBAP 内部调用 NavigateGoBackGoForward 导航到内容时,相关导航历史记录条目也会添加到 Internet Explorer 导航历史记录中。
  • 选择 Internet Explorer 导航 UI 中的条目时,Internet Explorer 会导致 NavigationService 向后导航或转发到与这些条目关联的内容。

注意

Frame可以提供自己的导航历史记录,也可以使用承载它的导航器的导航历史记录。 如果 Frame 提供自己的导航历史记录,则它可以显示自己的导航 UI 以浏览导航历史记录中的条目;这些条目不会添加到主机导航器的导航历史记录 (NavigationWindow、、 Frame浏览器) ,因此,无法从每个导航 UI 导航到 (查看 JournalOwnership) 。

有关 XBAP 支持的详细信息,请参阅 有关 WPF 浏览器托管的应用程序的常见问题 (XBAP)

属性

CanGoBack

获取一个值,该值指示后退导航历史记录中是否至少有一个条目。

CanGoForward

获取一个值,该值指示前进导航历史记录中是否至少有一个条目。

Content

获取或设置对包含当前内容的对象的引用。

CurrentSource

获取上次导航到的内容的 URI。

Source

获取或设置当前内容的 URI,或当前正在导航到的新内容的 URI。

方法

AddBackEntry(CustomContentState)

向包含 CustomContentState 对象的后退导航历史记录中添加一个条目。

Equals(Object)

确定指定对象是否等于当前对象。

(继承自 Object)
GetHashCode()

作为默认哈希函数。

(继承自 Object)
GetNavigationService(DependencyObject)

获取对导航器的 NavigationService 的引用,该导航器的内容中包含指定的 DependencyObject

GetType()

获取当前实例的 Type

(继承自 Object)
GoBack()

导航到后退导航历史记录中的最新条目(如果有)。

GoForward()

导航到前进导航历史记录中的最新条目(如果有)。

MemberwiseClone()

创建当前 Object 的浅表副本。

(继承自 Object)
Navigate(Object)

异步导航到某个对象中包含的内容。

Navigate(Object, Object)

异步导航某个对象包含的内容,并传递一个对象,其中包含要在导航过程中进行处理的数据。

Navigate(Uri)

异步导航到由 URI 指定的内容。

Navigate(Uri, Object)

异步导航到位于某个 URI 中的源内容,并传递一个对象,其中包含要在导航过程中进行处理的数据。

Navigate(Uri, Object, Boolean)

异步导航到位于某个 URI 中的源内容,传递一个对象(其中包含在导航过程中进行处理的导航状态),并沙盒处理内容。

Refresh()

重新加载当前内容。

RemoveBackEntry()

移除后退历史记录中的最新日记条目。

StopLoading()

停止为当前导航请求下载更多内容。

ToString()

返回表示当前对象的字符串。

(继承自 Object)

事件

FragmentNavigation

在开始导航到内容片段时发生,如果所需片段位于当前内容中,则立即发生;如果所需片段位于不同的内容中,则发生在加载源 XAML 内容之后。

LoadCompleted

当已加载、分析并开始呈现目标导航内容时发生。

Navigated

找到导航的目标内容且可通过 Content 属性得到这些内容时发生,即使尚未加载完毕也是如此。

Navigating

请求新导航时发生。

NavigationFailed

在导航到所请求内容出错时发生。

NavigationProgress

在下载过程中定期发生,用于提供定位进度信息。

NavigationStopped

在调用 StopLoading() 方法时发生,或者在当前导航正处于进行过程中时又请求一个新导航时发生。

适用于