ComponentResourceKey 태그 확장

외부 어셈블리에서 로드되는 리소스에 대한 키를 정의하고 참조합니다. 이렇게 하면 리소스 조회에서 어셈블리 또는 클래스의 명시적 리소스 사전이 아닌 어셈블리의 대상 형식을 지정할 수 있습니다.

XAML 특성 사용(설정 키, 압축)

<object x:Key="{ComponentResourceKey {x:Type targetTypeName}, targetID}" ... />  

XAML 특성 사용(설정 키, 자세한 정보)

<object x:Key="{ComponentResourceKey TypeInTargetAssembly={x:Type targetTypeName}, ResourceID=targetID}" ... />  

XAML 특성 사용(리소스 요청, 압축)

<object property="{DynamicResource {ComponentResourceKey {x:Type targetTypeName}, targetID}}" ... />  

XAML 특성 사용(리소스 요청, 자세한 정보)

<object property="{DynamicResource {ComponentResourceKey TypeInTargetAssembly={x:Type targetTypeName}, ResourceID=targetID}}" ... />  

XAML 값

설명
targetTypeName 리소스 어셈블리에 정의되는 퍼블릭 CLR(공용 언어 런타임) 형식의 이름입니다.
targetID 리소스에 대한 키입니다. 리소스가 조회될 때 targetID는 리소스의 x:Key 지시문과 유사합니다.

설명

위의 사용에서 보듯이 {ComponentResourceKey} 태그 확장 사용은 다음 두 위치에서 찾을 수 있습니다.

  • 컨트롤 작성자가 제공한 테마 리소스 사전 내의 키 정의.

  • 컨트롤을 다시 템플릿화하지만 컨트롤의 테마에서 제공된 리소스에서 생성되는 속성 값을 사용하려는 경우 어셈블리에서 테마 리소스에 액세스.

테마에서 생성되는 구성 요소 리소스를 참조하는 경우 일반적으로 {StaticResource} 대신 {DynamicResource}를 사용하는 것이 좋습니다. 이는 사용에 표시됩니다. 사용자가 테마 자체를 변경할 수 있기 때문에 {DynamicResource}가 권장됩니다. 테마를 지원하기 위한 컨트롤 작성자의 의도와 가장 밀접하게 일치하는 구성 요소 리소스를 원하는 경우 구성 요소 리소스 참조도 동적이 되도록 설정해야 합니다.

TypeInTargetAssembly는 리소스가 실제로 정의된 대상 어셈블리에 있는 형식을 식별합니다. ComponentResourceKeyTypeInTargetAssembly가 정의된 위치를 정확히 아는 것과 관계없이 정의하고 사용할 수 있지만, 결국 참조된 어셈블리를 통해 형식을 확인해야 합니다.

ComponentResourceKey는 일반적으로 이후 클래스의 멤버로 노출되는 키를 정의하는 데 사용됩니다. 이 사용의 경우 태그 확장이 아닌 ComponentResourceKey 클래스 생성자를 사용합니다. 자세한 내용은 ComponentResourceKey 또는 컨트롤 작성 개요 항목의 “테마 리소스에 대한 키 정의 및 참조” 섹션을 참조하세요.

키 설정과 키 지정 리소스 참조의 경우 특성 구문은 일반적으로 ComponentResourceKey 태그 확장에 사용됩니다.

표시된 압축 구문은 태그 확장의 ComponentResourceKey 생성자 서명과 위치 매개 변수 사용을 기반으로 합니다. targetTypeNametargetID가 제공되는 순서가 중요합니다. 자세한 구문은 ComponentResourceKey 매개 변수 없는 생성자를 사용한 다음, 개체 요소의 실제 특성 구문과 유사한 방식으로 TypeInTargetAssemblyResourceId를 설정합니다. 자세한 구문에서 속성이 설정된 순서는 중요하지 않습니다. 이 두 가지 대안(압축 및 자세한 정보)의 관계와 메커니즘은 태그 확장 및 WPF XAML 항목에서 자세히 설명합니다.

기술적으로 targetID 값은 임의 개체일 수 있으며 문자열이 아니어도 됩니다. 그러나 WPF에서 가장 일반적인 사용은 targetID 값을 문자열인 양식에 맞추는 것이며, 해당 문자열은 XamlName 문법에서 유효합니다.

ComponentResourceKey는 개체 요소 구문에서 사용할 수 있습니다. 이 경우 확장을 올바르게 초기화하려면 TypeInTargetAssemblyResourceId 속성의 값을 모두 지정해야 합니다.

WPF XAML 판독기 구현에서 이 태그 확장에 대한 처리는 ComponentResourceKey 클래스를 통해 정의됩니다.

ComponentResourceKey은 태그 확장입니다. 태그 확장은 특성 값을 리터럴 값 또는 처리기 이름이 아닌 다른 값이 되도록 이스케이프해야 하는 요구 사항이 있는 경우 일반적으로 구현되며 이러한 요구 사항은 특정 형식 또는 속성에 형식 변환기를 배치하는 것보다 더 포괄적입니다. XAML의 모든 태그 확장은 특성 구문에 { 및 } 문자를 사용하며, 여기서 특성 구문은 XAML 프로세서가 태그 확장이 특성을 처리해야 함을 인식하는 데 사용하는 규칙입니다. 자세한 내용은 태그 확장 및 WPF XAML을 참조하세요.

참고 항목