WPF基础五:UI②内容元素Frame

 

Frame 

框架是一种支持导航的内容控件。

Frame 提供导航到和显示内容的功能的内容控件。 Frame 与其他控件和元素一样,可在其他内容中托管。

当 Frame 控件导航到 HTML 内容时, Frame 控件在内部实例化本机 WebBrowser ActiveX 控件。 WPF 通过将功能控件应用于 WebBrowser ActiveX 控件来启用安全功能。 应用的功能控件在 Xbap 和独立应用程序方面有所不同。 某些应用程序应该应用其他功能控制,以防止恶意内容运行。 有关详细信息,请参阅 Security (WPF) 和 WebBrowser 控件概述和教程中的 "WebBrowser 控件和功能控件" 一节。

内容可以是任何类型的 .NET Framework 对象和 HTML 文件。 但一般情况下,页面是打包内容以进行导航的首选方式 (参阅 Page) 。

可以通过将属性设置为 Source 所需内容的 URI 来导航至内容。 此外,还可以使用方法的以下重载之一导航到内容 Navigate :

当内容通过 URI 导航到时,将 Frame 返回包含内容的对象。 或者,可以通过使用接受对象的方法重载之一来导航到内容 Navigate :

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

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

下图说明了这些事件将激发的顺序:

页面导航流程图

在导航过程中或导航后, Frame 提供有关要导航到的内容的信息,包括要导航到的内容的 uri (Source) 、当前内容 () 的 uri CurrentSource 以及包含导航到 () 的内容的对象 Content 。

导航到内容时,会 Frame 将导航记录为导航历史记录中的条目。 当出现新的导航时,通过调用 Navigate 方法或通过在前进导航历史记录中通过调用导航到某个条目来向后导航历史记录中添加一个条目 GoForward 。 通过在后退导航历史记录中通过调用来向后导航历史记录中添加一个条目 GoBack 。 CanGoBack 和 CanGoForward 报告后退和前进导航历史记录中是否存在条目。

第一次从另一段内容导航到一个内容时,将 Frame 自动显示允许用户在导航历史记录中向后和向前导航的导航用户界面。 可以通过设置属性来配置显示导航 UI 的时间 NavigationUIVisibility 。

默认情况下, Frame 仅当父导航器 (时 NavigationWindow , Frame 找不到具有其自己的导航历史记录的) 的导航历史记录。 这意味着,框架的导航历史记录项与父导航器的导航历史记录项从不。 若要指定 Frame 管理自己的导航历史记录,请将 JournalOwnership 属性设置为 OwnsJournal 。

后退导航历史记录中的最新条目可通过调用删除 RemoveBackEntry 。

Frame 不会在导航历史记录中存储内容对象的实例。 相反, Frame 每次使用导航历史记录导航到内容对象时,都将创建该对象的新实例。 此行为旨在避免在将大量内容导航到时消耗过多的内存。 因此,不会从一个导航到下一个导航来记住内容的状态。 不过,WPF 提供了多种方法,你可以通过这些方法在导航历史记录中存储部分内容的状态。

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

若要对多个控件应用相同的属性设置 Frame ,请使用 Style 属性。 您可以修改默认值 ControlTemplate ,为控件指定独特的外观。 有关创建的详细信息 ControlTemplate ,请参阅 通过创建 System.windows.controls.controltemplate> 自定义现有控件的外观。 若要查看特定于的部分和状态,请 Frame 参阅 框架样式和模板

此控件的依赖属性可能由控件的默认样式设置。 如果按默认样式设置属性,则当控件出现在应用程序中时,属性可能会更改为默认值。 默认样式取决于应用程序运行时使用的桌面主题。 有关详细信息,请参阅 默认的 WPF 主题

只有视觉对象属性已存在于控件的默认模板中并且已使用 TemplateBinding 设置时,设置该属性才有效。 在通过创建 ControlTemplate 自定义现有控件的外观一文的更改控件的视觉结构部分可以找到视觉属性列表。


字段

名称备注权限
SchemeDelimiter指定将通讯协议方案同 URI 的地址部分分开的字符public
UriSchemeFile指定 URI 是指向文件的指针public
UriSchemeFtp指定通过文件传输协议 (FTP) 访问 URIpublic
UriSchemeGopher指定通过 Gopher 协议访问 URIpublic
UriSchemeHttp指定通过超文本传输协议 (HTTP) 访问 URIpublic
UriSchemeHttps指定通过安全超文本传输协议 (HTTPS) 访问 URpublic
UriSchemeMailto指定 URI 是一个电子邮件地址,需通过简单邮件传输协议 (SMTP) 访问public
UriSchemeNetPipe指明通过 Windows Communication Foundation (WCF) 使用的 NetPipe 方案访问该 URIpublic
UriSchemeNetTcp指明通过 Windows Communication Foundation (WCF) 使用的 NetTcp 方案访问该 URIpublic
UriSchemeNews指定 URI 是 Internet 新闻组,而且可以通过 Network 新闻传输协议 (NNTP) 进行访问public
UriSchemeNntp指定 URI 是 Internet 新闻组,而且可以通过 Network 新闻传输协议 (NNTP) 进行访问public

 


属性

名称备注权限
AbsolutePath获取 URI 的绝对路径public
AbsoluteUri获取绝对 URIpublic
Authority获取服务器的域名系统 (DNS) 主机名或 IP 地址和端口号public
DnsSafeHost获得可安全用于 DNS 解析的未转义主机名(如必要)public
Fragment获取转义 URI 片段public
Host获取此实例的主机部分public
HostNameType获取 URI 中指定的主机名的类型public
IdnHost根据需要使用 Punycode,获取主机的符合 RFC 3490 标准的国际域名。 该字符串在不进行转义的情况下(如必要)可安全用于 DNS 解析public
IsAbsoluteUri获取一个值,该值指示 Uri 实例是否为绝对实例public
IsDefaultPort获取一个值,该值指示 URI 的端口值是否为此方案的默认值public
IsFile获取一个值,该值指示指定的 Uri 是否为文件 URIpublic
IsLoopback获取一个值,该值指示指定的 Uri 是否引用本地主机public
IsUnc获取一个值,该值指示指定的 Uri 是否为统一命名约定 (UNC) 路径public
LocalPath获取文件名的本地操作系统表示形式public
OriginalString获取传递给 Uri 构造函数的原始 URI 字符串public
PathAndQuery获取用问号 (?) 分隔的 AbsolutePath 和 Query 属性public
Port获取此 URI 的端口号public
Query获取指定 URI 中包括的任何查询信息public
Scheme获取此 URI 的方案名称public
Segments获取包含构成指定 URI 的路径段的数组public
UserEscaped获取一个值,该值指示 URI 字符串是否在创建 Uri 实例之前已被完全转义public
UserInfo获取用户名、密码或其他与指定 URI 关联的特定于用户的信息public

 


方法

名称备注权限
Canonicalize将内部存储的 URI 转换为规范化格式protected
CheckHostName确定指定的主机名是否为有效的 DNS 名称public
CheckSchemeName确定指定的方案名是否有效public
CheckSecurity调用此方法不起任何作用protected
Compare使用指定的比较规则比较两个 URI 的指定部分public
Equals比较两个 Uri 实例是否相等public
Escape将路径部分中的任何不安全字符或保留字符转换为对应的十六进制字符表示形式protected
EscapeDataString将字符串转换为它的转义表示形式public
EscapeString将字符串转换为它的转义表示形式protected
EscapeUriString将 URI 字符串转换为它的转义表示形式public
FromHex获取十六进制数字的十进制值public
GetComponents使用特殊字符的指定转义,获取当前实例的指定部分public
GetHashCode获取 URI 的哈希代码public
GetLeftPart获取 Uri 实例的指定部分public
GetObjectData返回序列化当前实例所需的数据protected
HexEscape将指定的字符转换为它的等效十六进制字符public
HexUnescape将字符的指定十六进制表示形式转换为字符public
IsBadFileSystemCharacter指示字符是否在文件系统名称中无效protected
IsBaseOf确定当前的 Uri 实例是否为指定 Uri 实例的基public
IsExcludedCharacter确定是否应转义指定的字符protected
IsHexDigit确定指定的字符是否为有效的十六进制数字public
IsHexEncoding确定字符串中的一个字符是否为十六进制编码public
IsReservedCharacter确定指定的字符是否为保留字符protected
IsWellFormedOriginalString指示用于构造此 Uri 的字符串是否格式良好,以及它是否不需要进一步转义public
IsWellFormedUriString通过尝试用字符串构造一个 URI 来指示字符串是否为格式良好的,并确保字符串不需要进一步转义public
MakeRelative确定两个 Uri 实例之间的差异public
MakeRelativeUri确定两个 Uri 实例之间的差异public
Parse分析当前实例的 URI 以确保它包含有效 URI 所需的所有部分protected
ToString获取指定的 Uri 实例的规范化字符串表示形式public
TryCreate创建一个新的 Uri。 在无法创建 Uri 时不引发异常public
Unescape转换指定的字符串,方法是将任何转义序列替换为相应的未转义表示形式protected
UnescapeDataString将字符串转换为它的非转义表示形式public

运算

名称

备注

权限

Equality

确定两个 Uri 实例是否具有相同的值public

Inequality

确定两个 Uri 实例是否具有不同的值public

接口

名称

备注

权限

ISerializable.GetObjectData返回序列化当前实例所需的数据void

XAML范例

<Window x:Class="FrameDemo.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:FrameDemo"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">
    <Frame Name="islandFrame" JournalOwnership="OwnsJournal"Source="https://www.microsoft.com/zh-cn/" />
</Window>


 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值