x:Type 태그 확장

지정된 XAML 형식의 기본 형식인 CLR Type 개체를 제공합니다.

XAML 특성 사용

<object property="{x:Type prefix:typeNameValue}" .../>

XAML 개체 요소 사용

<x:Type TypeName="prefix:typeNameValue"/>

XAML 값

Description
prefix 선택 사항입니다. 기본이 아닌 XAML 네임스페이스를 매핑하는 접두사입니다. 접두사 지정은 대부분의 경우 필수가 아닙니다. 설명 부분을 참조하세요.
typeNameValue 필수 사항입니다. 현재 기본 XAML 네임스페이스로 확인할 수 있는 형식 이름이거나, prefix가 제공된 경우에는 지정된 매핑된 접두사입니다.

설명

x:Type 태그 확장에는 C#의 typeof() 연산자 또는 Microsoft Visual Basic의 GetType 연산자에 대한 유사한 함수가 있습니다.

x:Type 태그 확장은 Type 형식을 사용하는 속성에 대한 from-string 변환 동작을 제공합니다. 입력은 XAML 형식입니다. 입력 XAML 형식과 출력 CLR Type 간의 관계는 XAML 스키마 컨텍스트와 컨텍스트에서 제공하는 IXamlTypeResolver 서비스를 바탕으로 필요한 XamlType을 검색하면, 출력 Type은 입력 XamlTypeUnderlyingType이 됩니다.

.NET XAML 서비스에서 이 태그 확장에 대한 처리는 TypeExtension 클래스에 의해 정의됩니다.

특정 프레임워크 구현에서는 Type을 값으로 사용하는 일부 속성이 형식의 이름(Name 형식의 문자열 값)을 직접 수락할 수 있습니다. 그러나 이 동작을 구현하는 일은 상당히 복잡합니다. 다음 "WPF 사용량 참고 사항" 섹션에서 예시를 확인할 수 있습니다.

특성 구문은 이러한 태그 확장에 가장 많이 사용되는 구문입니다. x:Type 식별자 문자열 다음에 나오는 문자열 토큰은 기본 TypeName 확장명 클래스의 TypeExtension 값으로 할당됩니다. CLR 형식을 기반으로 하는 .NET XAML Services의 기본 XAML 스키마 컨텍스트에서 이 특성의 값은 원하는 형식의 Name이거나, 기본이 아닌 XAML 네임스페이스 매핑에 대한 접두사가 앞에 오는 Name을 포함하는 값입니다.

x:Type 태그 확장은 개체 요소 구문에서 사용할 수 있습니다. 이 경우 확장을 올바르게 초기화하려면 TypeName 속성의 값을 지정해야 합니다.

x:Type 태그 확장을 자세한 정보 특성으로 사용할 수도 있지만, 일반적인 사용 방법은 아닙니다. <object property="{x:Type TypeName=typeNameValue}" .../>

WPF 사용 정보

기본 XAML 네임스페이스 및 형식 매핑

WPF 프로그래밍의 기본 XAML 네임스페이스에는 일반적인 XAML 시나리오에 필요한 대부분의 XAML 형식이 포함되어 있습니다. 따라서 XAML 형식 값을 참조할 때 많은 경우 접두사를 사용하지 않을 수 있습니다. 사용자 지정 어셈블리에 있는 형식이나 WPF 어셈블리에 있지만 기본 XAML 네임스페이스에 매핑되지 않은 CLR 네임스페이스에 있는 형식을 참조하는 경우에는 접두사를 매핑해야 할 수 있습니다. 접두사, XAML 네임스페이스 및 CLR 네임스페이스 매핑에 대한 자세한 내용은 WPF XAML의 XAML 네임스페이스 및 네임스페이스 매핑을 참조하세요.

Typename-as-String을 지원하는 형식 속성

WPF에서는 x:Type 태그 확장을 사용하지 않고도 Type 형식의 일부 속성 값을 지정하는 기술을 지원합니다. 대신 값을 형식 이름을 지정하는 문자열로 지정할 수 있습니다. 대표적인 예는 ControlTemplate.TargetTypeStyle.TargetType입니다. 이 동작에 대한 지원은 형식 변환기나 태그 확장을 통해 제공되지 않습니다. 대신 이 동작은 FrameworkElementFactory를 통해 구현되는 지연 동작입니다.

Silverlight는 이와 유사한 규칙을 지원합니다. 사실 Silverlight는 현재 자체 XAML 언어 지원에서 {x:Type}를 지원하지 않으며, WPF-Silverlight XAML 마이그레이션을 지원하기 위한 몇 가지 상황을 제외하면 {x:Type} 사용을 허용하지 않습니다. 따라서 typename-as-string 동작은 Type가 값인 모든 Silverlight 네이티브 속성 평가에 기본적으로 제공됩니다.

XAML 2009

XAML 2009는 제네릭 형식에 대한 추가 지원을 제공하며, 이러한 지원을 제공할 수 있도록 x:TypeArgumentsx:Type의 기능 동작을 수정합니다.

  • x:TypeArguments 및 일반 개체 인스턴스화를 위한 관련 개체 요소는 루트가 아닌 다른 요소에 존재할 수 있습니다. 자세한 내용은 x:TypeArguments 지시문의 "XAML 2009" 섹션을 참조하세요.

  • XAML 2009는 태그에서 제네릭 형식의 제약 조건을 지정하는 구문을 지원합니다. 이 구문은 x:TypeArguments 또는 x:Type을 이용하거나 두 기능을 조합하면 사용할 수 있습니다.

  • 또한 부하를 위해 XAML 2009를 처리할 때 WPF XAML을 구현하면, Type 형식을 사용하는 특정 프레임워크 속성의 암시적 형식 변환 동작에 이 기능을 추가할 수 있습니다.

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

참고 항목