다음을 통해 공유


XAML에 대한 형식 변환기 및 태그 확장

형식 변환기와 태그 확장은 XAML 형식 시스템과 XAML 작성기가 개체 그래프 구성 요소를 생성하는 데 사용하는 두 가지 기술입니다. 일부 특성을 공유하지만 형식 변환기와 태그 확장은 XAML 노드 스트림에서 다르게 표시됩니다. 이 설명서 집합에서 형식 변환기, 태그 확장 및 유사한 구문을 통칭하여 값 변환기라고도 합니다.

값 변환기

XAML에서 값 변환기는 다양한 시나리오에 사용됩니다. 다음 목록에서는 XAML의 다양한 형식의 값 변환기를 보여 있습니다.

  • 형식 변환기

  • 태그 확장

  • 값 직렬 변환기

  • XAML 텍스트 구문에 대한 논리를 제공하는 관련 클래스 또는 지원 클래스

형식 변환기

.NET XAML Services 정의에서 형식 변환기는 CLR TypeConverter 클래스에서 파생되는 클래스입니다. TypeConverter XAML이 존재하기 전에 .NET에 있던 클래스입니다. 원래 목적은 IDE 속성에 대한 속성 창과 유사한 텍스트 기반 편집 은유를 지원하는 것이었습니다. .NET에 XAML을 도입하면 TypeConverter 사용하여 텍스트 구문(특성 값 또는 XAML 값 노드에 있는 경우)을 개체로 변환합니다. TypeConverter 개체 값을 텍스트 구문으로 serialize하는 데 사용할 수도 있습니다. TypeConverter WPF(Windows Presentation Foundation) 및 WCF(Windows Communication Foundation)의 이전 프레임워크별 XAML 구현에서도 사용되었습니다. XAML의 대한 자세한 내용은 XAML 개요형식 변환기를 참조하세요.

태그 확장

.NET XAML Services 구현에서 태그 확장은 MarkupExtension 클래스에서 파생되는 클래스입니다. 태그 확장은 이 양식에서 XAML 언어로 시작되는 개념입니다. 태그 확장은 해당 논리를 제공하기 위해 서비스 클래스를 호출하는 확장 가능한 이스케이프 시퀀스처럼 생각할 수 있습니다. 태그 측면에서 XAML 프로세서는 텍스트 문자열에서 여는 중괄호({)로 시작하는 텍스트 시퀀스로 태그 확장을 보편적으로 인식합니다.

태그 확장은 형식 변환기와 다릅니다. 형식 변환기는 일반적으로 형식 또는 멤버와 연결됩니다. 개체 그래프를 만들거나 serialization에서 해당 엔터티와 연결된 텍스트 구문을 발견하면 호출됩니다.

태그 확장은 단일 지원 서비스 클래스와 연결되지만 멤버 값에 적용할 수 있습니다. 그러나 서비스 컨텍스트를 사용하여 태그 확장을 구현하여 의도적으로 특정 멤버 또는 대상 형식으로 사용을 제한할 수 있습니다. 태그 확장은 형식 변환기 연결을 재정의할 수 있습니다. 또는 텍스트 구문을 지원하지 않는 멤버의 특성 값을 지정하는 데 사용할 수 있습니다.

XAML에 대한 태그 확장 구현 패턴에 대한 자세한 내용은 XAML용 태그 확장 개요참조하세요.

값 직렬 변환기

ValueSerializer 개체를 문자열로 변환하는 데 최적화된 특수 형식 변환기입니다. XAML에 대한 ValueSerializerConvertFrom 메서드를 전혀 구현하지 않을 수 있습니다. ValueSerializer 구현은 TypeConverter 구현과 같은 방식으로 서비스를 가져옵니다. 가상 메서드는 입력 context 매개 변수를 제공합니다. context 매개 변수는 IServiceProvider 인터페이스에서 상속되고 GetService 메서드가 있는 IValueSerializerContext형식입니다.

XAML 형식 시스템 및 직렬화에 XAML 노드 루프 처리를 사용하는 XAML 기록기 구현의 경우 형식 또는 멤버와 연결된 값 변환기가 자체 XamlType.ValueSerializer 속성에 의해 보고됩니다. serialization을 수행하는 XAML 작성기에 대한 의미는 XamlType.TypeConverterXamlType.ValueSerializer 있는 경우 형식 변환기를 로드 경로에 사용해야 하며 값 serializer를 저장 경로에 사용해야 한다는 것입니다. XamlType.TypeConverter 있지만 XamlType.ValueSerializernull경우 저장 경로에도 형식 변환기가 사용됩니다.

기타 값 변환기

값 변환기는 형식 변환기 또는 태그 확장의 특정 패턴 이상으로 확장할 수 있습니다. 그러나 이 사용자 지정에는 .NET XAML 서비스에서 제공하는 대로 XAML 형식 시스템을 다시 정의해야 합니다. 기존 XAML 형식 시스템에는 형식 변환기, 태그 확장 및 값 serializer에 대한 표현 및 보고 시스템이 있지만 사용자 지정 형식의 값 변환에는 사용되지 않습니다. 사용자 지정 값 변환기를 만들려면 XamlValueConverter<TConverterBase> 형식을 사용합니다.

조합의 형식 변환기 및 태그 확장

태그 확장 및 형식 변환기는 XAML의 다양한 상황에 사용됩니다. 태그 확장 사용에 컨텍스트를 사용할 수 있지만 태그 확장이 값을 제공하는 속성의 형식 변환 동작은 일반적으로 태그 확장 구현에서 확인되지 않습니다. 즉, 태그 확장이 텍스트 문자열을 ProvideValue 출력으로 반환하더라도 특정 속성 또는 속성 값 형식에 적용된 해당 문자열의 형식 변환 동작은 호출되지 않습니다. 일반적으로 태그 확장의 목적은 문자열을 처리하고 관련된 형식 변환기 없이 개체를 반환하는 것입니다.

값 변환기용 서비스 컨텍스트

값 변환기를 구현할 때 값 변환기가 적용되는 컨텍스트에 액세스해야 하는 경우가 많습니다. 이 컨텍스트를 서비스 컨텍스트라고 합니다. 서비스 컨텍스트에는 활성 XAML 스키마 컨텍스트, XAML 스키마 컨텍스트 및 XAML 개체 작성기가 제공하는 형식 매핑 시스템에 대한 액세스 등의 정보가 포함될 수 있습니다. 값 변환기에서 사용할 수 있는 서비스 컨텍스트 및 서비스 컨텍스트에서 제공할 수 있는 서비스에 액세스하는 방법에 대한 자세한 내용은 형식 변환기 및 태그 확장사용할 수 있는 서비스 컨텍스트를 참조하세요.

참고 항목