다음을 통해 공유


DynamicResource 태그 확장

정의된 리소스에 대한 값 참조를 지연하여 임의의 XAML 속성 특성에 대한 값을 제공합니다. 해당 리소스에 대한 조회 동작은 런타임 조회와 유사합니다.

XAML 특성 사용

<object property="{DynamicResource key}" ... />  

XAML 속성 요소 사용

<object>  
  <object.property>  
    <DynamicResource ResourceKey="key" ... />  
  </object.property>  
</object>  

XAML 값

설명
key 요청한 리소스의 키입니다. 이 키는 태그에서 리소스가 만들어진 경우 x:Key 지시문에 의해 처음에 할당되었거나 코드에서 리소스가 만들어진 경우 ResourceDictionary.Add를 호출할 때 key 매개 변수로 제공되었습니다.

설명

DynamicResource는 초기 컴파일 중에 임시 표현식을 생성하므로 개체를 구성하기 위해 요청된 리소스 값이 실제로 필요할 때까지 리소스 조회를 연기합니다. 이는 XAML 페이지가 로드된 이후일 수 있습니다. 리소스 값은 현재 페이지 범위에서 시작하는 모든 활성 리소스 사전에 대한 키 검색을 기반으로 하며 컴파일에서 자리 표시자 식으로 대체됩니다.

중요

종속성 속성 우선 순위 측면에서 DynamicResource 식은 동적 리소스 참조가 적용되는 위치와 동일합니다. 이전에 DynamicResource 식을 로컬 값으로 사용하던 속성에 로컬 값을 설정하면 DynamicResource이 완전히 제거됩니다. 자세한 내용은 종속성 속성 값 우선 순위를 참조하세요.

특정 리소스 액세스 시나리오는 StaticResource 태그 확장과 달리 DynamicResource에 특히 적합합니다. DynamicResourceStaticResource 의 상대적인 장점 및 성능 영향에 대한 자세한 내용은 XAML리소스를 참조하세요.

지정된 ResourceKey는 페이지, 애플리케이션, 사용 가능한 컨트롤 테마 및 외부 리소스 또는 시스템 리소스의 특정 수준에서 x:Key 지시문으로 결정되는 기존 리소스에 해당해야 하며, 리소스 조회는 해당 순서대로 진행됩니다. 정적 및 동적 리소스에 대한 리소스 조회에 대한 자세한 내용은 XAML 리소스를 참조하세요.

리소스 키는 XamlName 문법에 정의된 문자열일 수 있습니다. 리소스 키는 Type과 같은 다른 개체 형식일 수도 있습니다. Type 키는 테마로 컨트롤의 스타일 지정하는 방법의 기본 요소입니다. 자세한 내용은 컨트롤 제작 개요를 참조하세요.

리소스 값을 조회하기 위한 API(예: FindResource)는 DynamicResource에서 사용하는 것과 동일한 리소스 조회 논리를 따릅니다.

리소스를 참조하는 다른 선언적 방법은 StaticResource 태그 확장입니다.

특성 구문은 이러한 태그 확장에 가장 많이 사용되는 구문입니다. DynamicResource 식별자 문자열 다음에 나오는 문자열 토큰은 기본 ResourceKey 확장명 클래스의 DynamicResourceExtension 값으로 할당됩니다.

DynamicResource는 개체 요소 구문에서 사용될 수도 있습니다. 이 경우 ResourceKey 속성의 값을 지정해야 합니다.

DynamicResource 속성을 다음과 같이 속성=값 쌍으로 지정하는 자세한 특성 사용 구문에도 ResourceKey을 사용할 수 있습니다.

<object property="{DynamicResource ResourceKey=key}" ... />  

자세한 정보 표시는 대개 설정 가능한 속성이 둘 이상이거나 일부 속성이 선택 사항인 확장의 경우에 유용합니다. DynamicResource에는 설정 가능한 속성이 하나뿐이고 이 속성은 필수적 속성이므로 자세한 정보 표시를 사용하지 않는 것이 일반적입니다.

WPF XAML 프로세서 구현에서 이 태그 확장에 대한 처리는 DynamicResourceExtension 클래스를 통해 정의됩니다.

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

참고 항목