NavigationService 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
包含支持导航的各种方法、属性和事件。
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 一来导航到内容:
- NavigationService.Navigate(Uri)
- NavigationService.Navigate(Uri, Object)
- NavigationService.Navigate(Uri, Object, Boolean)
当通过 URI 导航到内容时, NavigationService 将返回一个包含该内容的对象。
可以通过以下事件跟踪导航的生存期:
- Navigating
- Navigated
- NavigationProgress
- NavigationFailed
- NavigationStopped
- LoadCompleted
- FragmentNavigation
并非每次发生导航时都会引发所有事件;引发的事件集由 (内容或内容片段) 发生的导航类型以及导航完成 (取消、停止或失败) 的方式决定。
下图演示了引发这些事件的顺序:
在导航期间或之后, NavigationService 提供有关要导航到的内容的信息,包括导航到 (Source) 的内容的 URI、当前内容 (CurrentSource) 的 URI,以及包含导航到 (Content) 的内容的对象。
导航到内容时, NavigationService 会将导航记录为导航历史记录中的条目。 当发生新导航时,通过调用 方法或通过调用 Navigate 导航到前进导航历史记录中的条目,将条目添加到后退导航历史记录 GoForward。 通过调用 GoBack导航到后退导航历史记录中的条目,添加一个条目以转发导航历史记录。 CanGoBack 和 CanGoForward 分别报告后向导航历史记录和前进导航历史记录中是否有条目。 此外,可以通过调用 RemoveBackEntry来删除后退导航历史记录中的最新条目。
默认情况下, NavigationService 不会在导航历史记录中存储内容对象的实例。 NavigationService而是在每次使用导航历史记录导航到内容对象时创建一个新实例。 此行为旨在避免在导航到大量内容和大量内容时过度消耗内存。 因此,从一个导航到另一个导航,内容的状态不会被记住。 但是,WPF 提供了多种技术,通过这些技术,你可以在导航历史记录中存储一段内容的状态。
使用 AddBackEntry,还可以记住单个页面实例的多个状态集。
NavigationService 是类 sealed
,因此无法实例化;而是 NavigationService 由导航器用来启用导航。 在 WPF 中,有两个导航器: NavigationWindow 和 Frame。
从视觉上看,XBAP 使用 Internet Explorer 作为导航器,以提供集成的用户体验。 但是,在物理上,XBAP 实际上使用 NavigationWindow 作为导航器; MainWindow 在 Internet Explorer 中运行的 XBAP 的 属性将返回对 NavigationWindow的引用,由 NavigationWindow 管理的导航历史记录与由 Internet Explorer 管理的导航历史记录集成在一起,方式如下:
- 通过从 XBAP 内部调用 Navigate、 GoBack和 GoForward 导航到内容时,相关导航历史记录条目也会添加到 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() 方法时发生,或者在当前导航正处于进行过程中时又请求一个新导航时发生。 |