x:Key 特性

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

XAML 属性用法

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

XAML 属性用法(隐式 ResourceDictionary

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

XAML 值

术语 Description
对象 任何可共享的对象。 请参阅 ResourceDictionary 和 XAML 资源引用
字符串键值 用作键的真实字符串,它必须符合 XamlName> 语法。 请参阅下面的“XamlName 语法”。

XamlName 语法

以下是 Windows 运行时 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:Keyx:Name 或两者。 密钥和名称不需要匹配。

请注意,在显示的隐式语法中, ResourceDictionary 对象在 XAML 处理器生成新对象以填充 Resources 集合的方式中隐式显示。

代码中使用 x:Key 的等效操作是任何使用底层 ResourceDictionary 键的操作。 例如,将资源添加到 ResourceDictionary 时,在标记中应用的 x:Key 等效于 Insert的键参数的值。

如果项是目标样式ControlTemplate,则资源字典中的项可以省略 x:Key 的值;在每种情况下,资源项的隐式键都是被解释为字符串的 TargetType 值。 有关详细信息,请参阅 XAML 样式ResourceDictionary 和 XAML 资源引用