다음을 통해 공유


x:Key 지시문

XAML 정의 사전에서 생성되고 참조되는 요소를 고유하게 식별합니다. XAML 개체 요소에 x:Key 값을 추가하는 것은 리소스 사전에서 리소스를 식별하는 가장 일반적인 방법입니다(예: WPF ResourceDictionary).

XAML 특성 사용

<object x:Key="stringKeyValue".../>  
-or-  
<object x:Key="{markupExtensionUsage}".../>  

XAML 특성 사용량(WPF별)

<object.Resources>  
  <object x:Key="stringKeyValue".../>  
</object.Resources>  
-or-  
<object.Resources>  
  <object x:Key="{markupExtensionUsage}".../>  
</object.Resources>  

XAML 값

묘사
stringKeyValue 키로 사용할 텍스트 문자열입니다. 텍스트 문자열은 XamlName 문법준수해야 합니다.
markupExtensionUsage 태그 확장 구분 기호 {}내에서 키로 사용할 개체를 제공하는 태그 확장 사용입니다. 비고를 참조하세요.

발언

x:Key XAML 리소스 사전 개념을 지원합니다. 언어로 XAML은 특정 UI 프레임워크에 남아 있는 리소스 사전 구현을 정의하지 않습니다. WPF에서 XAML 리소스 사전을 구현하는 방법에 대한 자세한 내용은 XAML 리소스 개요(WPF .NET)참조하세요.

XAML 2006 및 WPF에서는 x:Key 특성으로 제공해야 합니다. 문자열이 아닌 키를 계속 사용할 수 있지만 특성 형식의 문자열이 아닌 값을 제공하려면 태그 확장 사용이 필요합니다. XAML 2009를 사용하는 경우 태그 확장 중간을 요구하지 않고 문자열 이외의 개체 형식으로 키가 지정된 사전을 명시적으로 지원하기 위해 x:Key 요소로 지정할 수 있습니다. 이 항목의 "XAML 2009" 섹션을 참조하세요. 주의 섹션의 나머지 부분은 특히 XAML 2006 구현에 적용됩니다.

x:Key 특성 값은 XamlName Grammar 정의된 문자열이거나 태그 확장을 통해 평가되는 개체일 수 있습니다. WPF의 예제는 "WPF 사용 현황 정보"를 참조하세요.

IDictionary 구현인 부모 요소의 자식 요소는 일반적으로 해당 사전 내에서 고유한 키 값을 지정하는 x:Key 특성을 포함해야 합니다. 프레임워크는 별칭이 지정된 키 속성을 구현하여 특정 형식의 x:Key 대체할 수 있습니다. 이러한 속성을 정의하는 형식은 DictionaryKeyPropertyAttribute.

x:Key 지정하는 것과 동등한 코드는 기본 IDictionary사용되는 키입니다. 예를 들어 WPF의 리소스에 대한 태그에 적용되는 x:Key 코드의 WPF ResourceDictionary 리소스를 추가할 때 ResourceDictionary.Addkey 매개 변수의 값과 동일합니다.

WPF 사용 현황 정보

WPF ResourceDictionary같은 IDictionary 구현인 부모 개체의 자식 개체는 일반적으로 x:Key 특성을 포함해야 하며 키 값은 해당 사전 내에서 고유해야 합니다. 두 가지 주목할 만한 예외가 있습니다.

  • 일부 WPF 형식은 사전 사용에 대한 암시적 키를 선언합니다. 예를 들어 TargetType있는 Style 또는 DataType있는 DataTemplateResourceDictionary 있을 수 있으며 암시적 키를 사용할 수 있습니다.

  • WPF는 병합된 리소스 사전 개념을 지원합니다. 병합된 사전 간에 키를 공유할 수 있으며 공유 키 동작은 FindResource사용하여 액세스할 수 있습니다. 자세한 내용은 병합된 리소스 사전참조하세요.

전체 WPF XAML 구현 및 애플리케이션 모델에서는 XAML 태그 컴파일러에서 키 고유성을 확인하지 않습니다. 대신, 누락되거나 고유하지 않은 x:Key 값으로 인해 로드 시간 XAML 파서 오류가 발생합니다. 그러나 WPF에 대한 사전을 Visual Studio에서 처리하는 경우 디자인 단계에서 이러한 오류를 확인할 수 있습니다.

표시된 구문에서 ResourceDictionary 개체는 WPF XAML 프로세서가 컬렉션을 생성하여 Resources 컬렉션을 채우는 방법에 암시적입니다. ResourceDictionary 일반적으로 태그의 요소로 명시적으로 제공되지는 않지만 명확성을 위해 원하는 경우일 수 있습니다(Resources 속성 요소와 사전을 채우는 항목 사이의 컬렉션 개체 요소일 수 있음). 컬렉션 개체가 태그에서 거의 항상 암시적 요소인 이유에 대한 자세한 내용은 XAML 구문 세부 정보참조하세요.

WPF XAML 구현에서 리소스 사전 키에 대한 처리는 ResourceKey 추상 클래스에 의해 정의됩니다. 그러나 WPF XAML 프로세서는 사용량에 따라 키에 대해 서로 다른 기본 확장 유형을 생성합니다. 예를 들어 DataTemplate 또는 파생 클래스의 키는 별도로 처리되고 고유한 DataTemplateKey 개체를 생성합니다.

키와 이름은 기본 XAML 정의에서 서로 다른 지시문 및 언어 요소(x:Keyx:Name)를 사용합니다. 키와 이름은 WPF 정의 및 이러한 개념의 적용에 의해 다양한 상황에서도 사용됩니다. 자세한 내용은 WPF XAML 이름 범위참조하세요.

앞에서 설명한 대로 키 값은 태그 확장을 통해 제공할 수 있으며 문자열 값 이외의 값일 수 있습니다. WPF 시나리오의 예는 x:Key 값이 ComponentResourceKey수 있다는 것입니다. 특정 컨트롤은 스타일을 완전히 대체하지 않고 해당 컨트롤의 모양과 동작의 일부에 영향을 주는 사용자 지정 스타일 리소스에 대해 해당 형식의 스타일 키를 노출합니다. 이러한 키의 예는 ButtonStyleKey.

WPF 병합된 사전 기능은 키 고유성 및 키 조회 동작에 대한 추가 고려 사항을 소개합니다. 자세한 내용은 병합된 리소스 사전참조하세요.

XAML 2009

XAML 2009는 항상 특성 형식으로 제공되는 x:Key 제한을 완화합니다.

WPF에서는 XAML 2009 기능을 사용할 수 있지만 태그 컴파일되지 않은 XAML에만 사용할 수 있습니다. WPF용 태그 컴파일 XAML 및 XAML의 BAML 형식은 현재 XAML 2009 키워드 및 기능을 지원하지 않습니다.

XAML 2009에서 다음 사용을 통해 x:Key 요소를 지정할 수 있습니다.

XAML 요소 사용(XAML 2009에만 해당)

<object>  
  <x:Key>  
keyObject  
  </x:Key>  
...  
</object>  

XAML 값

묘사
keyObject 특수한 사전에서 지정된 object 키로 사용되는 개체의 개체 요소입니다.
  • 이러한 종류의 사용에 대한 컨테이너/부모는 여기에 표시되지 않습니다. object 특수 사전 구현을 나타내는 개체 요소의 자식이어야 합니다. keyObject 특정 특수 사전 구현의 키로 적합한 개체 인스턴스(또는 값 형식의 값)여야 합니다.

  • WPF는 이 사용이 필요한 사전을 구현하지 않습니다. 개체 키는 XAML 언어의 일반적인 기능으로, XAML에서 사전을 만드는 것이 바람직한 특정 사용자 지정 사전 시나리오에 유용할 수 있습니다. 리소스에 문자열이 아닌 키를 사용하는 암시적 스타일과 같은 WPF 기능의 경우 키를 설정하거나 지정하는 다른 기술이 존재하므로 개체 키를 사용할 필요가 없습니다.

  • keyObject 직접 개체 인스턴스가 아닌 개체 요소 형식의 태그 확장 사용일 수도 있습니다.

Silverlight 사용 현황 정보

Silverlight에 대한 x:Key 별도로 문서화됩니다. 자세한 내용은 XAML 네임스페이스(x:) 언어 기능(Silverlight)참조하세요.

참고 항목