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

Definition

Gibt bei Implementierung in einer abgeleiteten Klasse ein Objekt zurück, das als Wert der Zieleigenschaft für diese Markuperweiterung bereitgestellt wird.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

Parameter

serviceProvider
IServiceProvider IServiceProvider IServiceProvider IServiceProvider

Ein Dienstanbieter-Hilfsprogramm, das Dienste für die Markuperweiterung bereitstellen kann.A service provider helper that can provide services for the markup extension.

Gibt zurück

Der Objektwert, der für die Eigenschaft festgelegt werden soll, auf die die Erweiterung angewendet wird.The object value to set on the property where the extension is applied.

Hinweise

Wenn ein XAML-Prozessor einen Typknoten und einen Elementwert verarbeitet, bei dem es sich um eine ProvideValue Markup Erweiterung handelt, ruft er die-Methode dieser Markup Erweiterung auf und schreibt das Ergebnis in das Objekt Diagramm oder den Serialisierungsstream.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. Der XAML-objektwriter übergibt den Dienst Kontext über den serviceProvider -Parameter an jede dieser Implementierungen.The XAML object writer passes service context to each such implementation through the serviceProvider parameter.

Weitere Informationen zum Implementieren ProvideValue von in einer benutzerdefinierten Markup Erweiterung finden Sie im Abschnitt "Hinweise zu Implementierern".See "Notes to Implementers" section for more information on how to implement ProvideValue in a custom markup extension.

Hinweise zur WPF-VerwendungWPF Usage Notes

Wichtig

WPF-Klassen, die über bestimmte Interaktionen mit Markup Satz Vorgängen verfügen IReceiveMarkupExtension , sollten .NET Framework 4.NET Framework 4 sich nicht für eine-Implementierung verlassen.WPF classes that have specific interactions with markup set operations should not rely on IReceiveMarkupExtension for a .NET Framework 4.NET Framework 4 implementation. Verwenden XamlSetMarkupExtensionAttributeSie stattdessen-attributierte Rückrufe.Use XamlSetMarkupExtensionAttribute-attributed callbacks instead.

Hinweise für Vererber

Allgemeine Dienste, die vom Standard Dienstanbieter zurückgegeben werden und in der Regel für eine MarkupExtension benutzerdefinierte oder vorhandene Implementierung verfügbar sind, umfassen die folgenden primären Dienste.Common services returned by the default service provider that is typically available to a custom or existing MarkupExtension implementation include the following primary services.

  • IProvideValueTargetmeldet den Objekt Verweis und einen Eigenschafts Bezeichner aus dem Kontext, in dem die Markup Erweiterung verwendet wird.
  • IProvideValueTarget reports the object reference and a property identifier from the context where the markup extension is used
  • IXamlTypeResolvermacht einen Dienst verfügbar, der mit dem allgemeinen Schreibverhalten des XAML-Objekts Type vergleichbar ist, das einen auf Grundlage eines XAML-Typnamens bereitstellen kann.
  • IXamlTypeResolver exposes a service that parallels the general XAML object writing behavior that can provide a Type based on a XAML type name.
  • Der Name kann optional ein Präfix für einen zugeordneten XAML-Namespace enthalten.The name can optionally include a prefix for a mapped XAML namespace.
  • IXamlSchemaContextProvidermacht den aktiven XAML-Schema Kontext direkt verfügbar.
  • IXamlSchemaContextProvider exposes the active XAML schema context directly.
  • Aus dem gemeldeten XamlSchemaContextkönnen Sie XAML-Schema Kontextinformationen abrufen, z. b. wie Assemblys für Typunterstützung, bevorzugtes Präfix in XamlType Assemblys, Listen der einzelnen in einer Assembly usw. zugeordnet werden.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.

    -Weitere verfügbare Dienste für speziellere Markup Erweiterungs Szenarien:- 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>  
    

    Möglicherweise können Implementierungen ProvideValue(IServiceProvider) von den serviceProvider -Parameter ignorieren.Potentially, implementations of ProvideValue(IServiceProvider) can ignore the serviceProvider parameter. Dies ist für einige grundlegende Szenarien geeignet, in denen kein Kontext zum Zurückgeben eines Werts erforderlich ist.This is viable for some basic scenarios, where no context at all is required for returning a value.

    In der typischen Verwendung stellen die .NET Framework XAML-Dienste und die implementierten XAML-objektwriter einen Dienstanbieter für alle Wert Konverter-Methoden bereit, die während der XAML-Verarbeitung aufgerufen werden.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. Aus Gründen der Stabilität sollten Sie jedoch Codepfade für NULL-Werte sowohl für den Dienstanbieter selbst als auch für jeden angeforderten Dienst bereitstellen.However, for robustness, you should provide code paths for null values both for the service provider itself and for any requested service. NULL-Werte können auftreten, wenn die Markup Erweiterung in einem Fall angewendet wird, dass die von einer XAML-Prozessor Infrastruktur bereitgestellte typische Dienst Unterstützung nicht verfügbar ist.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.

    Weitere Informationen zu verfügbaren Diensten aus dem XAML-Dienstanbieter Kontext und deren Verwendung finden Sie unter Typkonverter und Markup Erweiterungen für 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.

    Für Implementierungen, bei denen ein bestimmter Dienst verfügbar sein muss, um ein nützliches ProvideValue(IServiceProvider) Ergebnis zu liefern, wird erwartet, dass Ausnahmen ausgelöst werden, wenn dieser Dienst nicht verfügbar ist.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. Die empfohlene Ausnahme, die ausgelöst InvalidOperationExceptionwerden soll, ist.The recommended exception to throw is InvalidOperationException.

    Die Implementierung kann auch Ausnahmen auslösen, wenn eines der Argumente, die die benutzerdefinierte Markup Erweiterung benötigt, um einen Wert anzugeben, NULL ist, für den Datentyp ungültig ist oder keinen Wert enthält, der von der Markup Erweiterung verarbeitet werden kann.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. Die empfohlene Ausnahme, die ausgelöst InvalidOperationExceptionwerden soll, ist.The recommended exception to throw is InvalidOperationException.

    Gilt für:

    Siehe auch