MarkupExtension.ProvideValue(IServiceProvider) MarkupExtension.ProvideValue(IServiceProvider) MarkupExtension.ProvideValue(IServiceProvider) MarkupExtension.ProvideValue(IServiceProvider) Method


派生クラスで実装された場合、このマークアップ拡張機能のターゲット プロパティの値として提供されるオブジェクトを返します。When implemented in a derived class, returns an object that is provided as the value of the target property for this markup extension.

 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


IServiceProvider IServiceProvider IServiceProvider IServiceProvider

マークアップ拡張機能のサービスを提供できるサービス プロバイダーのヘルパー。A service provider helper that can provide services for the markup extension.


拡張機能が適用されたプロパティで設定するオブジェクト値。The object value to set on the property where the extension is applied.


XAML プロセッサは、マークアップ拡張機能は、型ノードとメンバー値を処理するときに呼び出す、ProvideValueそのマークアップ拡張機能のメソッド、オブジェクト グラフまたはシリアル化ストリームに結果を書き込みます。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
  • IXamlTypeResolver 可能な動作を記述する一般的な XAML オブジェクトに対応するサービスを公開、 Type 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:

    実装では、可能性のある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. Null 値が発生する状況でマークアップ拡張機能が適用されている場合、XAML プロセッサ インフラストラクチャによって提供される一般的なサービスのサポートは使用できません。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)結果がそのサービスが利用できない場合に例外をスローする必要があります。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. 推奨される例外をスローするはInvalidOperationExceptionします。The recommended exception to throw is InvalidOperationException.

    カスタム マークアップ拡張機能は、値は null を提供するために必要な引数の 1 つがそのデータ型の正しくないか、マークアップ拡張機能が処理できる値を含まない場合、実装は例外をスローできます。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. 推奨される例外をスローするはInvalidOperationExceptionします。The recommended exception to throw is InvalidOperationException.