x:Type 标记扩展

更新:2007 年 11 月

为所提供的类型提供 Type 对象。

XAML 属性用法

<object property="{x:Type prefix:typeNameValue}" .../>

XAML 对象元素用法

<object>
  <object.property>
    <x:Type TypeName="prefix:typeNameValue"/>
  </object.property>
</object>

XAML 值

prefix

可选。映射非默认 XML 命名空间的前缀。指定前缀通常不是必需的,请参见“备注”。

typeNameValue

必需。可解析为当前默认 XML 命名空间的类型名,如果提供了 prefix,则为所指定的映射前缀。

备注

x:Type 用于为采用 Type 的属性 (Property) 提供属性 (Attribute) 值。但是,很多采用 Type 作为值的属性能够直接接受类型的名称(类型的 Name 的字符串值);有关详细信息,请参见特定属性的文档。x:Type 实质上是 C# 中的 typeof() 运算符或 Microsoft Visual Basic .NET 中的 GetType 运算符的等效标记扩展。

可以为任何给定的 XAML 页定义默认 XML 命名空间并将其作为根元素上的属性。通常,用于 Windows Presentation Foundation (WPF) 编程的默认 XML 命名空间是 WPF 命名空间。该命名空间的标识符是 https://schemas.microsoft.com/winfx/2006/xaml/presentation。面向公用 WPF 应用程序编程的许多类型都位于此命名空间中。因此,在使用 x:Type 时,您通常不必映射前缀来获取类型。在以下情况下可能需要映射前缀:所引用的类型来自自定义程序集,或者类型存在于 WPF 程序集内,但位于 CLR 命名空间中,而该命名空间未映射为该程序集内 WPF 命名空间的一部分。有关前缀、XML 命名空间和映射 CLR 命名空间的信息,请参见 XAML 命名空间和命名空间映射

属性语法是最常用于此标记扩展的语法。在 x:Type 标识符字符串之后提供的字符串标记被指定为基础 TypeExtension 扩展类的 TypeName 值。此属性的值是所需类型的 Name

x:Type 可以在对象元素语法中使用。在这种情况下,指定 TypeName 属性的值是正确初始化该扩展所必需的。

x:Type 还可以用在将 TypeName 属性 (Property) 指定为“属性 (Property) =值”对的详细属性 (Attribute) 用法中:

<object property="{x:Type TypeName=typeNameValue}" .../>

如果扩展具有一个以上的可设置属性,或者某些属性是可选的,则详细用法通常会很有用。由于 x:Type 仅有一个可设置的属性,并且此属性是必需的,因此该详细用法不具有典型性。

在 WPF XAML 处理器实现中,对此标记扩展的处理由 TypeExtension 类定义。

x:Type 是标记扩展。当要求转义属性 (attribute) 值应为非文本值或非处理程序名称时,通常会实现标记扩展,相对于只在某些类型或属性 (property) 上放置类型转换器而言,此要求更具有全局性。XAML 中的所有标记扩展在其属性语法中都使用 { 和 } 字符,XAML 处理器通过这一约定确认标记扩展必须处理该属性。有关更多信息,请参见标记扩展和 XAML

请参见

概念

样式设置和模板化

XAML 概述

标记扩展和 XAML

参考

Style