x:Key 特性

唯一标识作为资源被创建和引用的元素,这些资源存在于一个 ResourceDictionary 中。

XAML 属性使用方法

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

XAML 属性使用方法(隐式 ResourceDictionary

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

XAML 值

术语 说明
object 任何可共享的对象。 请参阅 ResourceDictionary 和 XAML 资源引用
stringKeyValue 一个用作键的真实字符串,它必须遵守 XamlName 语法。 请参阅下面的“XamlName 语法”。

XamlName 语法

以下是在通用 Windows 平台 (UWP) XAML 实现中作为键使用的字符串的规范语法:

XamlName ::= NameStartChar (NameChar)*
NameStartChar ::= LetterCharacter | '_'
NameChar ::= NameStartChar | DecimalDigit
LetterCharacter ::= ('a'-'z') | ('A'-'Z')
DecimalDigit ::= '0'-'9'
CombiningCharacter::= none
  • 字符被限制在较低的 ASCII 范围,具体而言,就是大写和小写罗马字母、数字和下划线 (_) 字符。
  • 不支持 Unicode 字符范围。
  • 名称不能以数字开头。

注解

ResourceDictionary 的子元素一般包含一个 x:Key 属性,该属性在该词典中指定一个唯一的键值。 键唯一性在加载时由 XAML 处理器执行。 非唯一的 x:Key 值将导致 XAML 分析异常。 如果 {StaticResource} 标记扩展发出请求,任何未解析的键也会导致 XAML 分析异常。

x:Keyx:Name 不是同一概念。 x:Key 仅用于资源词典中。 x:Name 适用于 XAML 的所有区域。 一个使用键值的 FindName 调用不会检索键资源。 在资源字典中定义的对象可能有一个 x:Key、一个 x:Name 或两者皆有。 不要求键和名称互相匹配。

请注意,在给出的隐式语法中,ResourceDictionary 对象在 XAML 处理器生成一个新对象来填充 Resources 集合的方式上是隐式的。

指定 x:Key 的代码等效于任何结合使用一个键和基础 ResourceDictionary 的操作。 例如,当向一个 ResourceDictionary 添加资源时,一个应用于资源标记中的 x:Key 等效于 Insertkey 参数的值。

如果资源字典中的某个项是目标 StyleControlTemplate,则它可以省略 x:Key 的值;在每一种情况下,该资源项的隐式键都是解释为字符串的 TargetType 值。 有关详细信息,请参阅快速入门:设置控件的样式ResourceDictionary 和 XAML 资源引用