타사 컨트롤을 통합하는 사용자 지정 컨트롤 작성자 또는 애플리케이션이 컨트롤 스타일 지정에 사용할 테마별 리소스 사전을 로드하는 방법을 제공합니다.
XAML 특성 사용
<object property="{ThemeDictionary assemblyUri}" ... />
XAML 개체 요소 사용
<object>
<object.property>
<ThemeDictionary AssemblyName="assemblyUri"/>
<object.property>
<object>
XAML 값
가치 | 설명 |
---|---|
assemblyUri |
테마 정보를 포함하는 어셈블리의 URI(Uniform Resource Identifier)입니다. 일반적으로 이는 더 큰 패키지에서 어셈블리를 참조하는 Pack URI입니다. 어셈블리 리소스 및 Pack URI는 배포 문제를 완화합니다. 자세한 내용은 WPF의 Pack URI를 참조하세요. |
비고
이 확장은 특정 속성 값인 ResourceDictionary.Source에 대한 값 하나만 채우도록 설계되었습니다.
이 확장을 사용하여 Windows Aero 테마가 사용자 시스템에 적용될 경우에만 사용할 몇몇 스타일이 포함되고 Luna 테마가 활성화된 경우에는 다른 스타일이 포함되는 단일 리소스 전용 어셈블리를 지정할 수 있습니다. 이 확장을 사용하면 컨트롤별 리소스 사전의 콘텐츠가 자동으로 유효성이 검사되고 필요한 경우 또 다른 테마에 관련되도록 다시 로드됩니다.
assemblyUri
문자열(AssemblyName 속성 값)은 특정 테마에 적용된 사전을 식별하는 명명 규칙의 기반을 형성합니다. ThemeDictionary
에 대한 ProvideValue 논리는 미리 컴파일된 리소스 어셈블리 내에 포함된 특정 테마 사전 변형을 가리키는 URI(Uniform Resource Identifier)를 생성하여 규칙을 완성합니다. 여기서는 이 규칙에 대한 설명이나 개념상 일반 컨트롤 스타일 지정 및 페이지/애플리케이션 수준 스타일 지정과 테마의 상호 작용을 다루지 않습니다. ThemeDictionary
사용에 대한 기본 시나리오는 애플리케이션 수준에서 선언된 ResourceDictionary
의 Source 속성을 지정하는 것입니다. 직접 URI가 아닌 ThemeDictionary
확장을 통해 어셈블리에 URI를 제공하는 경우 확장 논리는 시스템 테마가 변경될 때마다 적용되는 무효화 논리를 제공합니다.
특성 구문은 이 태그 확장에 사용되는 가장 일반적인 구문입니다.
ThemeDictionary
식별자 문자열 이후에 제공된 문자열 토큰은 기본 AssemblyName 확장 클래스의 ThemeDictionaryExtension 값으로 할당됩니다.
ThemeDictionary
는 개체 요소 구문에서 사용될 수도 있습니다. 이 경우 ResourceKey 속성의 값을 지정해야 합니다.
DynamicResource
속성을 다음과 같이 속성=값 쌍으로 지정하는 자세한 특성 사용 구문에도 ResourceKey을 사용할 수 있습니다.
<object property="{ThemeDictionary AssemblyName=assemblyUri}" ... />
자세한 정보 표시는 대개 설정 가능한 속성이 둘 이상이거나 일부 속성이 선택 사항인 확장의 경우에 유용합니다. DynamicResource
에는 설정 가능한 속성이 하나뿐이고 이 속성은 필수적 속성이므로 자세한 정보 표시를 사용하지 않는 것이 일반적입니다.
WPF XAML 프로세서 구현에서 이 태그 확장에 대한 처리는 DynamicResourceExtension 클래스를 통해 정의됩니다.
ThemeDictionary
태그 확장입니다. 마크업 확장은 속성 값을 리터럴 값이나 처리기 이름이 아닌 다른 값으로 처리해야 할 필요가 있을 때 일반적으로 구현되며, 이러한 필요는 특정 형식이나 속성에만 형식 변환기를 사용하는 것보다 더 광범위합니다. XAML의 모든 태그 확장은 특성 구문에 { 및 } 문자를 사용하며, 여기서 특성 구문은 XAML 프로세서가 태그 확장이 특성을 처리해야 함을 인식하는 데 사용하는 규칙입니다. 자세한 내용은 태그 확장 및 WPF XAML을 참조하세요.
참고하십시오
.NET Desktop feedback