DynamicResource 태그 확장DynamicResource Markup Extension

해당 값을 정의 된 리소스에 대 한 참조로 지연 하 여 XAMLXAML 속성 특성에 대 한 값을 제공 합니다.Provides a value for any XAMLXAML property attribute by deferring that value to be a reference to a defined resource. 해당 리소스에 대 한 조회 동작은 런타임 조회와 유사 합니다.Lookup behavior for that resource is analogous to run-time lookup.

XAML 특성 사용XAML Attribute Usage

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

XAML 속성 요소 사용XAML Property Element Usage

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

XAML 값XAML Values

key 요청한 리소스의 키입니다.The key for the requested resource. 리소스를 태그에서 만들었거나 코드에서 리소스를 만든 경우 ResourceDictionary.Add를 호출할 때 key 매개 변수로 제공 된 경우이 키는 처음에 X:Key 지시문 에 의해 할당 되었습니다.This key was initially assigned by the x:Key Directive if a resource was created in markup, or was provided as the key parameter when calling ResourceDictionary.Add if the resource was created in code.

주의Remarks

DynamicResource에서는 초기 컴파일 중에 임시 식을 만들고 요청 된 리소스 값이 실제로 개체를 생성 하는 데 필요할 때까지 리소스 조회를 지연 합니다.A DynamicResource will create a temporary expression during the initial compilation and thus defer lookup for resources until the requested resource value is actually required in order to construct an object. 이는 XAMLXAML 페이지가 로드 된 후에 발생할 수 있습니다.This may potentially be after the XAMLXAML page is loaded. 리소스 값은 현재 페이지 범위에서 시작 하는 모든 활성 리소스 사전에 대 한 키 검색에 따라 검색 되며, 컴파일의 자리 표시자 식으로 대체 됩니다.The resource value will be found based on key search against all active resource dictionaries starting from the current page scope, and is substituted for the placeholder expression from compilation.

중요

종속성 속성 우선 순위 측면에서 DynamicResource 식은 동적 리소스 참조가 적용 되는 위치와 동일 합니다.In terms of dependency property precedence, a DynamicResource expression is equivalent to the position where the dynamic resource reference is applied. 이전에 DynamicResource 식이 로컬 값으로 포함 된 속성의 로컬 값을 설정 하면 DynamicResource 완전히 제거 됩니다.If you set a local value for a property that previously had a DynamicResource expression as the local value, the DynamicResource is completely removed. 자세한 내용은 종속성 속성 값 우선 순위를 참조하세요.For details, see Dependency Property Value Precedence.

특정 리소스 액세스 시나리오는 StaticResource 태그 확장이아닌 DynamicResource에 특히 적합 합니다.Certain resource access scenarios are particularly appropriate for DynamicResource as opposed to a StaticResource Markup Extension. DynamicResourceStaticResource 의 상대적인 장점 및 성능 영향에 대한 자세한 내용은 XAML리소스를 참조하세요.See XAML Resources for a discussion about the relative merits and performance implications of DynamicResource and StaticResource.

지정 된 ResourceKey 페이지, 응용 프로그램, 사용 가능한 컨트롤 테마 및 외부 리소스 또는 시스템 리소스의 특정 수준에서 X:Key 지시문 에 의해 결정 되는 기존 리소스와 일치 해야 하며, 리소스 조회가 해당 순서로 수행 됩니다.The specified ResourceKey should correspond to an existing resource determined by x:Key Directive at some level in your page, application, the available control themes and external resources, or system resources, and the resource lookup will happen in that order. 정적 및 동적 리소스의 리소스 조회에 대 한 자세한 내용은 XAML 리소스를 참조 하세요.For more information about resource lookup for static and dynamic resources, see XAML Resources.

리소스 키는 XamlName 문법에 정의 된 모든 문자열일 수 있습니다.A resource key may be any string defined in the XamlName Grammar. 리소스 키는 Type와 같은 다른 개체 형식일 수도 있습니다.A resource key may also be other object types, such as a Type. Type 키는 테마를 기준으로 컨트롤의 스타일을 지정 하는 방법에 대 한 기본입니다.A Type key is fundamental to how controls can be styled by themes. 자세한 내용은 컨트롤 제작 개요를 참조하세요.For more information, see Control Authoring Overview.

FindResource와 같은 리소스 값을 조회 하기 위한 Api는 DynamicResource에서 사용 되는 것과 동일한 리소스 조회 논리를 따릅니다.APIs for lookup of resource values, such as FindResource, follow the same resource lookup logic as used by DynamicResource.

리소스를 참조 하는 다른 선언적 방법은 StaticResource 태그 확장입니다.The alternative declarative means of referencing a resource is as a StaticResource Markup Extension.

특성 구문은 이러한 태그 확장에 가장 많이 사용되는 구문입니다.Attribute syntax is the most common syntax used with this markup extension. DynamicResource 식별자 문자열 다음에 나오는 문자열 토큰은 기본 ResourceKey 확장명 클래스의 DynamicResourceExtension 값으로 할당됩니다.The string token provided after the DynamicResource identifier string is assigned as the ResourceKey value of the underlying DynamicResourceExtension extension class.

개체 요소 구문에 DynamicResource 사용할 수 있습니다.DynamicResource can be used in object element syntax. 이 경우 ResourceKey 속성의 값을 지정 해야 합니다.In this case, specifying the value of the ResourceKey property is required.

DynamicResource 속성을 다음과 같이 속성=값 쌍으로 지정하는 자세한 특성 사용 구문에도 ResourceKey을 사용할 수 있습니다.DynamicResource can also be used in a verbose attribute usage that specifies the ResourceKey property as a property=value pair:

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

자세한 정보 표시는 대개 설정 가능한 속성이 둘 이상이거나 일부 속성이 선택 사항인 확장의 경우에 유용합니다.The verbose usage is often useful for extensions that have more than one settable property, or if some properties are optional. DynamicResource에는 설정 가능한 속성이 하나뿐이고 이 속성은 필수적 속성이므로 자세한 정보 표시를 사용하지 않는 것이 일반적입니다.Because DynamicResource has only one settable property, which is required, this verbose usage is not typical.

WPFWPF XAMLXAML 프로세서 구현에서이 태그 확장에 대 한 처리는 DynamicResourceExtension 클래스에 의해 정의 됩니다.In the WPFWPF XAMLXAML processor implementation, the handling for this markup extension is defined by the DynamicResourceExtension class.

DynamicResource은 태그 확장입니다.DynamicResource is a markup extension. 태그 확장은 특성 값을 리터럴 값 또는 처리기 이름이 아닌 다른 값이 되도록 이스케이프해야 하는 요구 사항이 있는 경우 일반적으로 구현되며 이러한 요구 사항은 특정 형식 또는 속성에 형식 변환기를 배치하는 것보다 더 포괄적입니다.Markup extensions are typically implemented when there is a requirement to escape attribute values to be other than literal values or handler names, and the requirement is more global than just putting type converters on certain types or properties. XAMLXAML의 모든 태그 확장은 특성 구문에서 { 및 } 문자를 사용합니다. 이러한 문자는 XAMLXAML 프로세서가 태그 확장이 특성을 처리해야 함을 인식하는 데 사용되는 규칙입니다.All markup extensions in XAMLXAML use the { and } characters in their attribute syntax, which is the convention by which a XAMLXAML processor recognizes that a markup extension must process the attribute. 자세한 내용은 태그 확장 및 WPF XAML을 참조하세요.For more information, see Markup Extensions and WPF XAML.

참조See also