Поделиться через


Атрибут x:Key

Обновлен: Ноябрь 2007

Однозначно определяет элементы, существующие в пределах ResourceDictionary, которые создаются как ресурсы и ссылки на которые выполняются как на ресурсы

Использование атрибута XAML

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

Значения XAML

stringKeyValue

Истинная строка используется как ключ, который должен соответствовать Грамматика XamlName.

или

Расширение разметки, которое предоставляет альтернативный тип объекта, служащий в качестве ключа. См. примечания.

Заметки

Дочерние элементы родительского элемента, которые являются реализацией IDictionary, такой как ResourceDictionary, обычно должны включать атрибут x:Key, который задает уникальное значение ключа в пределах этого словаря. Исключение составляют Style с TargetType или DataTemplate с DataType, каждый из которых уже имеет неявный ключ. Уникальность ключа требуется во время загрузки реализации процессора WPF XAML. Пропуск или неуникальность значений x:Key приведет к ошибке во время загрузки.

Значением атрибута x:Key может быть любая строка, определенная в Грамматика XamlName, или объект, вычисленный с помощью расширения разметки. Например, значением x:Key может быть ComponentResourceKey. Данный сценарий используется, когда некоторые элементы управления предоставляют ключ стиля, который может использоваться для создания пользовательского ресурса стиля, который изменяет внешний вид этого элемента управления без полной замены стиля. Примером такого ключа является ButtonStyleKey.

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

В реализации процессора WPF XAML обработка данного расширения разметки определяется абстрактным классом ResourceKey. Тем не менее процессор WPF XAML создает различные типы базовых расширений для ключей в зависимости от их применения. Например, ключ для DataTemplate или производных классов обрабатывается отдельно и создается объект DataTemplateKey.

Ключи и имена не являются идентичными понятиями, и на самом деле являются взаимоисключающими по определению WPF. Дополнительные сведения см. в разделе Область видимости имен WPF.

Код, эквивалентный заданию x:Key, является ключом, используемым для любых операций, которые использует ключ с базовым IDictionary. Например, x:Key применяемый в разметке для ресурса, эквивалентен значению параметра key для ResourceDictionary.Add при добавлении ресурса к ResourceDictionary. x:Key является особенностью языка XAML и не предназначен только для ResourceDictionary, но наиболее часто x:Key применяется в реализации WPF XAML).

См. также

Основные понятия

Общие сведения о ресурсах

Ресурсы и код

Ссылки

Расширение разметки StaticResource