MarkupExtension.ProvideValue(IServiceProvider) 메서드

정의

파생 클래스에서 구현된 경우 이 태그 확장의 대상 개체 속성에 대한 값으로 제공된 개체를 반환합니다.When implemented in a derived class, returns an object that is provided as the value of the target property for this markup extension.

public:
 abstract System::Object ^ ProvideValue(IServiceProvider ^ serviceProvider);
public abstract object ProvideValue (IServiceProvider serviceProvider);
abstract member ProvideValue : IServiceProvider -> obj
Public MustOverride Function ProvideValue (serviceProvider As IServiceProvider) As Object

매개 변수

serviceProvider
IServiceProvider

태그 확장에 대한 서비스를 제공할 수 있는 서비스 공급자 도우미입니다.A service provider helper that can provide services for the markup extension.

반환

Object

확장이 적용되는 속성에 설정할 개체 값입니다.The object value to set on the property where the extension is applied.

설명

XAML 프로세서가 태그 확장인 형식 노드 및 멤버 값을 처리 하면 해당 ProvideValue 태그 확장의 메서드를 호출 하 고 결과를 개체 그래프 또는 serialization 스트림에 씁니다.When a XAML processor processes a type node and member value that is a markup extension, it invokes the ProvideValue method of that markup extension and writes the result into the object graph or serialization stream. XAML 개체 작성기는 매개 변수를 통해 이러한 각 구현에 서비스 컨텍스트를 전달 합니다 serviceProvider .The XAML object writer passes service context to each such implementation through the serviceProvider parameter.

사용자 지정 태그 확장에서를 구현 하는 방법에 대 한 자세한 내용은 "구현자 참고 사항" 섹션을 참조 하세요 ProvideValue .See "Notes to Implementers" section for more information on how to implement ProvideValue in a custom markup extension.

WPF 사용 정보WPF Usage Notes

중요

태그 집합 작업과의 특정 상호 작용이 있는 WPF 클래스는 구현에 의존해 서는 안 됩니다 IReceiveMarkupExtension .NET Framework 4.NET Framework 4 .WPF classes that have specific interactions with markup set operations should not rely on IReceiveMarkupExtension for a .NET Framework 4.NET Framework 4 implementation. XamlSetMarkupExtensionAttribute대신 특성을 사용 하는 콜백을 사용 합니다.Use XamlSetMarkupExtensionAttribute-attributed callbacks instead.

구현자 참고

일반적으로 사용자 지정 또는 기존 구현에 사용할 수 있는 기본 서비스 공급자에서 반환 되는 일반 서비스 MarkupExtension 에는 다음과 같은 기본 서비스가 포함 됩니다.Common services returned by the default service provider that is typically available to a custom or existing MarkupExtension implementation include the following primary services.

  • IProvideValueTarget 태그 확장이 사용 되는 컨텍스트에서 개체 참조 및 속성 식별자를 보고 합니다.
  • IProvideValueTarget reports the object reference and a property identifier from the context where the markup extension is used
  • IXamlTypeResolverType xaml 형식 이름을 기반으로를 제공할 수 있는 일반적인 xaml 개체 쓰기 동작과 유사 하 게 서비스를 노출 합니다.
  • IXamlTypeResolver exposes a service that parallels the general XAML object writing behavior that can provide a Type based on a XAML type name.
  • 이름에는 매핑되는 XAML 네임 스페이스에 대 한 접두사를 선택적으로 포함할 수 있습니다.The name can optionally include a prefix for a mapped XAML namespace.
  • IXamlSchemaContextProvider 활성 XAML 스키마 컨텍스트를 직접 노출 합니다.
  • IXamlSchemaContextProvider exposes the active XAML schema context directly.
  • 보고 된에서 XamlSchemaContext 형식 지원, 어셈블리의 기본 설정 접두사, 어셈블리의 각 목록 등에 대해 어셈블리를 매핑하는 방법과 같은 XAML 스키마 컨텍스트 정보를 얻을 수 있습니다 XamlType .From the reported XamlSchemaContext, you can obtain XAML schema context information such as how assemblies are mapped for type support, preferred prefix in assemblies, lists of each XamlType in an assembly, and so on.

    -보다 특수화 된 태그 확장 시나리오에 사용할 수 있는 기타 서비스는 다음과 같습니다.- Other services available for more specialized markup extension scenarios include: - IUriContext

    -   <xref data-throw-if-not-resolved="true" uid="System.Xaml.IAmbientProvider"></xref>  
    
    -   <xref data-throw-if-not-resolved="true" uid="System.Xaml.IDestinationTypeProvider"></xref>  
    
    -   <xref data-throw-if-not-resolved="true" uid="System.Xaml.IRootObjectProvider"></xref>  
    
    -   <xref data-throw-if-not-resolved="true" uid="System.Xaml.IXamlNameResolver"></xref>  
    
    -   <xref data-throw-if-not-resolved="true" uid="System.Xaml.IXamlNamespaceResolver"></xref>  
    

    잠재적으로의 구현에서 ProvideValue(IServiceProvider) 매개 변수를 무시할 수 있습니다 serviceProvider .Potentially, implementations of ProvideValue(IServiceProvider) can ignore the serviceProvider parameter. 이는 값을 반환 하는 데 필요한 컨텍스트가 없는 일부 기본 시나리오에서 사용할 수 있습니다.This is viable for some basic scenarios, where no context at all is required for returning a value.

    일반적으로 사용 되는 .NET Framework XAML 서비스 및 구현 된 XAML 개체 작성기는 XAML 처리 중에 호출 되는 모든 값 변환기 메서드에 서비스 공급자를 제공 합니다.In typical usage, the .NET Framework XAML Services and the implemented XAML object writers will provide a service provider to all value converter methods that are invoked during XAML processing. 그러나 견고성을 위해 서비스 공급자 자체와 요청 된 서비스 모두에 대해 null 값에 대 한 코드 경로를 제공 해야 합니다.However, for robustness, you should provide code paths for null values both for the service provider itself and for any requested service. 태그 확장이 XAML 프로세서 인프라에서 제공 하는 일반 서비스 지원을 사용할 수 없는 경우에 적용 되는 경우 Null 값이 발생할 수 있습니다.Null values might occur if your markup extension is applied in a circumstance where the typical service support provided by a XAML processor infrastructure is not available.

    XAML 서비스 공급자 컨텍스트에서 사용 가능한 서비스 및 사용 방법에 대 한 자세한 내용은 xaml의 형식 변환기 및 태그 확장명을 참조 하세요.For more information on available services from the XAML service provider context and how to use them, see Type Converters and Markup Extensions for XAML.

    유용한 결과를 생성 하기 위해 특정 서비스를 사용할 수 있어야 하는 구현은 ProvideValue(IServiceProvider) 해당 서비스를 사용할 수 없는 경우 예외를 throw 할 것으로 예상 됩니다.Implementations that require a certain service to be available in order to produce a useful ProvideValue(IServiceProvider) result are expected to throw exceptions if that service is not available. Throw 하는 권장 되는 예외는 InvalidOperationException 입니다.The recommended exception to throw is InvalidOperationException.

    또한 사용자 지정 태그 확장에서 값을 제공 하는 데 필요한 인수 중 하나가 null 이거나, 해당 데이터 형식에 대해 유효 하지 않거나, 태그 확장에서 처리할 수 있는 값이 포함 되어 있지 않은 경우 구현이 예외를 throw 할 수 있습니다.The implementation may also throw exceptions if one of the arguments that the custom markup extension needs in order to provide a value is null, is invalid for its data type, or does not contain a value that the markup extension is capable of processing. Throw 하는 권장 되는 예외는 InvalidOperationException 입니다.The recommended exception to throw is InvalidOperationException.

    적용 대상

    추가 정보