x:Key 특성

업데이트: 2007년 11월

리소스로 만들어지고 참조되며 ResourceDictionary 내에 있는 요소를 고유하게 식별합니다.

XAML 특성 사용

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

XAML 값

stringKeyValue

키로 사용되는 실제 문자열이며 XamlName 문법을 따라야 합니다.

- 또는 -

키 역할을 하는 대체 개체 형식을 제공하는 태그 확장입니다. 설명 부분을 참조하십시오.

설명

ResourceDictionary와 같이 IDictionary 구현인 부모 요소의 자식 요소는 일반적으로 해당 사전 내에서 고유한 키 값을 지정하는 x:Key 특성을 포함해야 합니다. TargetType이 있는 Style 또는 DataType이 있는 DataTemplate은 암시적 키를 이미 가지고 있기 때문에 이 규칙이 적용되지 않습니다. 키 고유성은 요소가 로드될 때 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는 리소스를 ResourceDictionary에 추가할 때 지정하는 ResourceDictionary.Add의 key 매개 변수 값과 동일합니다. x:Key는 XAML 언어 기능으로, ResourceDictionary 전용은 아니지만 대개는 이 경우 WPF XAML 구현에서 x:Key를 적용합니다.

참고 항목

개념

리소스 개요

리소스 및 코드

참조

StaticResource 태그 확장