x:Key 属性

更新:2007 年 11 月

唯一地标识作为资源创建和引用且存在于 ResourceDictionary 中的元素。

XAML 属性用法

<object.Resources>
  <object x:Key="stringKeyValue".../>
</object.Resources>

XAML 值

stringKeyValue

一个实际用作键的字符串,它必须遵循 XamlName 语法

- 或 -

一个标记扩展,用来提供可充当键的替换对象类型。请参见“备注”。

备注

作为 IDictionary 实现(如 ResourceDictionary)的父元素的子元素通常必须包括一个 x:Key 属性,用来指定该字典中的唯一键值。具有 TargetTypeStyle 或者具有 DataTypeDataTemplate 就是例外,它们已经具有一个隐式键。键的唯一性在加载时由 WPF XAML 处理器实现来实施。如果缺少 x:Key 值且/或这些值不唯一,则将生成加载时错误。

x:Key 的属性值可以是在 XamlName 语法中定义的任何字符串,也可以是通过标记扩展计算的对象。例如,x:Key 的值可以是 ComponentResourceKey。当某些控件公开可用于创建自定义样式资源的样式键,而这些资源会影响该控件的外观(而不是替换整个控件的样式)时,可以使用此处的方案。ButtonStyleKey 就是这样的一个键。

请注意,在所显示的语法中,ResourceDictionary 对象在 XAML 处理器生成一个集合来填充 Resources 集合的方式上是隐式的,而且在标记中通常不以显式方式作为元素提供,尽管为了清楚起见可以这样做(此时它将充当 Resources 属性元素和其中填充字典的项之间的集合对象元素)。有关集合对象在标记中为隐式元素的原因的详细信息,请参见 XAML 语法术语

在 WPFXAML 处理器实现中,对该标记扩展的处理由 ResourceKey 抽象类进行定义。但是,WPF XAML 处理器会基于键的用法为键生成不同的基础扩展类型。例如,DataTemplate 或派生类的键是单独处理的,并生成一个不同的 DataTemplateKey 对象。

键和名称是不同的概念,在 WPF 的定义中,这些概念实际上是互斥的。有关详细信息,请参见 WPF 名称范围

与指定 x:Key 等效的代码是用于任何特定操作的键,这些操作将键用于基础 IDictionary。例如,当您向 ResourceDictionary 中添加资源时,应用于资源标记中的 x:Key 与 ResourceDictionary.Add 的 key 参数值等效。(x:Key 是一个 XAML 语言功能,而且不是专门面向 ResourceDictionary 的,但是 x:Key 它最常用于 WPF XAML 实现中。)

请参见

概念

资源概述

资源和代码

参考

StaticResource 标记扩展