ControlTemplate.TargetType 属性

定义

获取或设置 ControlTemplate 应用于的类型。

public:
 property TypeName TargetType { TypeName get(); void set(TypeName value); };
TypeName TargetType();

void TargetType(TypeName value);
public System.Type TargetType { get; set; }
var typeName = controlTemplate.targetType;
controlTemplate.targetType = typeName;
Public Property TargetType As Type
<ControlTemplate TargetType="typeName"/>

属性值

应用 ControlTemplate 的类型。 此值通常在 XAML 中设置,而不是在代码中设置。 请参阅“备注”。

注解

指定 TargetType 值的典型方法是通过 ControlTemplate 上的 XAML 属性。 在 XAML 中设置时,TargetType 的含义和提供的值将涉及在 XAML 中表示类型的某些方面。 具体而言,将给定类型引用为 XAML 元素所需的任何前缀也应作为 TargetType 值字符串的值包含在内。 例如,如果模板旨在以自定义类型为目标,该自定义类型必须在特定标记范围中以已映射的前缀“local”开头,则 TargetType 值应包含相同的前缀。 此行为由 Windows 运行时 XAML 分析器中的内置转换行为启用。

在大多数情况下,你将为 ControlTemplate 设置 TargetType,其中 ControlTemplate 位于 Template 属性的 Setter 中。 这又是在你为控件定义的隐式 样式 中。 包含 Style 的 ControlTemplate.TargetType 值和 Style.TargetType 值应始终为同一类型引用,引用同一隐式命名控件。 否则,控件模板可能无法工作。

有关如何编写控件模板的详细信息,请参阅 快速入门:控件模板

注意

如果之前已将 XAML 编程为Windows Presentation Foundation (WPF) ,则可能已使用 x:Type 标记扩展来填充采用 System.Type 的任何 XAML 值。 Windows 运行时 XAML 分析程序不支持 x:Type。 相反,应在不使用任何标记扩展的情况下按名称引用类型,并且任何必要的 XAML 到后备类型转换已经由上一段中所述的内置转换行为处理。

在代码中使用 TargetType

在代码中设置 TargetType 并不常见。 XAML 样式/模板系统旨在通过将 XAML 加载为资源并事先准备好控件模板的所有方面来使用。 在运行时之前,在极少数情况下,你不会知道有关控件和模板的信息,在这种情况下,需要在代码中创建或引用的 ControlTemplate 上设置 TargetType。

在代码中获取 TargetType 也很少见,但这样做可以双重检查从 XAML 加载的 ControlTemplate 与从运行时树获取的给定控件目标兼容。

提示

如果使用 Microsoft .NET 语言 (C# 或 Microsoft Visual Basic) 进行编程, 则 TypeName 类型投影为 System.Type。 使用 C# 编程时,通常使用 typeof 运算符根据类型名称作为字符串获取对类型的 System.Type 的引用。 在 Microsoft Visual Basic 中,使用 GetType

适用于

另请参阅