WPF Summary:XAML命名空间

      一个 XAML 文件只能有一个根元素,这样才能同时成为格式正确的 XML 文件和有效的 XAML 文件。 对于典型的 WPF 方案,将使用在 WPF 应用程序模型中具有重要意义的根元素(例如,为页使用 Window 或 Page,为外部字典使用 ResourceDictionary 或为应用程序定义使用 Application)。

      根元素还包含特性 xmlns 和 xmlns:x。 这些特性向 XAML 处理器指明哪些 XAML 命名空间包含标记将要作为元素引用的后备类型的类型定义。 xmlns 特性明确指示默认的 XAML 命名空间。 在默认的 XAML 命名空间中,可以不使用前缀指定标记中的对象元素。对于大多数 WPF 应用程序方案以及 SDK 的 WPF 部分中给出的几乎所有示例,默认的 XAML 命名空间均映射到为 WPF 命名空间 http://schemas.microsoft.com/winfx/2006/xaml/presentation。 xmlns:x 特性指示另外一个 XAML 命名空间,该命名空间映射 XAML 语言命名空间 http://schemas.microsoft.com/winfx/2006/xaml。

      使用 xmlns 定义用法范围和名称范围映射的做法符合 XML 1.0 规范。 XAML 名称范围与 XML 名称范围的不同仅在于:XAML 名称范围还包含有关进行类型解析和分析 XAML 时名称范围的元素如何受类型支持的信息。

注意:只有在每个 XAML 文件的根元素上,xmlns 特性才是绝对必需的。 xmlns 定义将适用于根元素的所有子代元素(此行为也符合 xmlns 的 XML 1.0 规范。)同时允许根以下的其他元素上具有 xmlns 特性,这些特性将适用于定义元素的任何子代元素。但是,频繁定义或重新定义 XAML 命名空间可能会导致 XAML 标记样式难以阅读。

      其 XAML 处理器的 WPF 实现包括可识别 WPF 核心程序集的基础结构。 已知 WPF 核心程序集包含支持 WPF 到默认 XAML 命名空间的映射的类型。 这是通过属于项目生成文件以及 WPF 生成和项目系统一部分的配置来实现的。因此,为了引用来自 WPF 程序集的 XAML 元素,只需将默认 XAML 命名空间声明为默认 xmlns。

x: 前缀

      在上面的根元素示例中,前缀 x: 用于映射 XAML 命名空间 http://schemas.microsoft.com/winfx/2006/xaml,该命名空间是支持 XAML 语言构造的专用 XAML 命名空间。 在这整个 SDK 的项目模板、示例以及文档中,此 x: 前缀用于映射该 XAML 命名空间。 XAML 语言的 XAML 命名空间包含多个将在 XAML 中频繁用到的编程构造。 下面列出了将用到的最常见的 x: 前缀编程构造:

Ø x:Key:为 ResourceDictionary(或其他框架中的类似字典概念)中的每个资源设置唯一的键。 在典型的 WPF 应用程序标记中的所有 x: 用法中,x:Key 将可能占到 90%。

Ø x:Class:向为 XAML 页提供代码隐藏的类指定 CLR 命名空间和类名。 必须具有这样一个类才能支持每个 WPF 编程模型的代码隐藏,而正是因此,即使没有资源,也几乎总是能看到映射的 x:。

Ø x:Name:处理对象元素后,为运行时代码中存在的实例指定运行时对象名称。 通常,您将为 x:Name 经常使用 WPF 定义的等效属性。 此类属性特定映射到 CLR 后备属性,因此更便于进行应用程序编程,在应用程序编程中,您经常使用运行时代码从初始化的 XAML 中查找命名元素。 最常见的此类属性是 FrameworkElement.Name。 在特定类型中不支持等效的 WPF 框架级Name 属性时,仍然可以使用 x:Name。 某些动画方案中会发生这种情况。

Ø x:Static:启用一个返回静态值的引用,该静态值只能是一个 XAML 兼容属性。

Ø x:Type:根据类型名称构造一个 Type 引用。 它用于指定采用 Type(例如 Style.TargetType)的特性,但属性经常具有本机的字符串到 Type 的转换功能,因此使用 x:Type 标记扩展用法是可选的。

Ø x:Code:它是在 XAML 中定义的一种指令元素。 x:Code 指令元素可以包含内联编程代码。 内联定义的代码可以与同一页中的 XAML 进行交互。 下面的示例阐释了内联 C# 代码。 请注意,该代码位于 x:Code 元素内,并且必须包围在 内,以便针对 XML 对内容进行转义,这样 XAML 处理器(解释 XAML 架构或 WPF 架构时)不会尝试按原义将内容解释为 XML。

 

void Clicked(object sender, RoutedEventArgs e)
{
BtnClickMe.Content = "Hello World!";
}
]]>

 

x: 前缀/XAML 命名空间中还有其他一些不太常见的编程构造。

自定义前缀

      对于自己的自定义程序集或 WPF 核心以外的程序集,可以将该程序集指定为自定义 xmlns 映射的一部分。只要该类型能够正确地实现以支持您所尝试的 XAML 用法,就可以在 XAML 中引用该程序集中的类型。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值