Атрибут 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 Строка true, используемая в качестве ключа, которая должна соответствовать грамматике XamlName> . См. раздел "Грамматика XamlName" ниже.

Грамматика XamlName

Ниже приведена нормативная грамматика для строки, используемой в качестве ключа в данной реализации XAML универсальной платформы для Windows (UWP).

XamlName ::= NameStartChar (NameChar)*
NameStartChar ::= LetterCharacter | '_'
NameChar ::= NameStartChar | DecimalDigit
LetterCharacter ::= ('a'-'z') | ('A'-'Z')
DecimalDigit ::= '0'-'9'
CombiningCharacter::= none
  • Символы ограничены нижним диапазоном ASCII и, в частности, прописными и строчными буквами римского алфавита, цифрами и символом подчеркивания (_).
  • Диапазон символов Юникод не поддерживается.
  • Имя не может начинаться с цифры.

Комментарии

Дочерние элементы ResourceDictionary обычно содержат атрибут x:Key, который указывает уникальное значение ключа в этом словаре. Уникальность ключа требуется процессором XAML во время загрузки. Неуникальные значения x:Key приведут к исключениям синтаксического анализа XAML. Если этого требует Расширение разметки {StaticResource}, неразрешенный ключ также приведет к исключениям синтаксического анализа XAML.

x:Key и x:Name не являются идентичными концепциями. x:Key используется только в словарях ресурсов. x:Name используется во всех областях XAML. Вызов FindName с помощью значения ключа не возвращает ресурс с ключом. Объекты, определенные в словаре ресурсов, могут иметь x:Key, x:Name или и то, и другое. Ключ и имя могут не совпадать.

Обратите внимание, что в приведенном примере неявного синтаксиса объект ResourceDictionary подразумевает, каким образом процессор XAML создает новый объект, чтобы заполнить коллекцию Resources.

Эквивалентом назначения x:Key на уровне кода является любая операция, в которой используется ключ с базовым ResourceDictionary. Например, атрибут x:Key, примененный в разметке к ресурсу, эквивалентен значению параметра key для Insert, когда вы добавляете ресурс в ResourceDictionary.

Элемент в словаре ресурсов может пропустить значение для x:Key, если оно является конечным объектом для Style или ControlTemplate. В каждом из этих вариантов неявный ключ элемента ресурса представляет собой значение TargetType, обрабатываемое как строка. Дополнительные сведения см. в разделах Краткое руководство: стили элементов управления и Ссылки на ресурсы ResourceDictionary и XAML.