Partager via


MarkupExtension.ProvideValue(IServiceProvider) Méthode

Définition

En cas d’implémentation dans une classe dérivée, retourne un objet qui est fourni comme valeur de la propriété cible de cette extension de balisage.

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

Paramètres

serviceProvider
IServiceProvider

Assistance de fournisseur de service qui peut fournir des services pour l’extension de balisage.

Retours

Valeur d’objet à définir sur la propriété où l’extension est appliquée.

Remarques

Lorsqu’un processeur XAML traite un nœud de type et une valeur de membre qui est une extension de balisage, il appelle la ProvideValue méthode de cette extension de balisage et écrit le résultat dans le graphe d’objets ou le flux de sérialisation. L’enregistreur d’objets XAML transmet le contexte de service à chacune de ces implémentations via le serviceProvider paramètre .

Pour plus d’informations sur l’implémentation ProvideValue dans une extension de balisage personnalisée, consultez la section « Remarques aux implémenteurs ».

Remarques sur l'utilisation de WPF

Important

Les classes WPF qui ont des interactions spécifiques avec les opérations de jeu de balisage ne doivent pas s’appuyer sur IReceiveMarkupExtension pour une implémentation de .NET Framework 4. Utilisez XamlSetMarkupExtensionAttributeà la place des rappels avec attributs.

Notes pour les responsables de l’implémentation

Les services courants retournés par le fournisseur de services par défaut qui sont généralement disponibles pour une implémentation personnalisée ou existante MarkupExtension incluent les services principaux suivants.

Potentiellement, les implémentations de ProvideValue(IServiceProvider) peuvent ignorer le serviceProvider paramètre . Cela est viable dans certains scénarios de base, où aucun contexte n’est nécessaire pour retourner une valeur.

Dans une utilisation classique, les services XAML .NET Framework et les enregistreurs d’objets XAML implémentés fournissent un fournisseur de services à toutes les méthodes de convertisseur de valeur appelées pendant le traitement XAML. Toutefois, pour des fins de robustesse, vous devez fournir des chemins de code pour les valeurs Null à la fois pour le fournisseur de services lui-même et pour tout service demandé. Des valeurs Null peuvent se produire si votre extension de balisage est appliquée dans une situation où la prise en charge du service standard fournie par une infrastructure de processeur XAML n’est pas disponible.

Pour plus d’informations sur les services disponibles à partir du contexte du fournisseur de services XAML et sur leur utilisation, consultez Convertisseurs de types et extensions de balisage pour XAML.

Les implémentations qui nécessitent la disponibilité d’un certain service pour produire un résultat utile ProvideValue(IServiceProvider) sont censées lever des exceptions si ce service n’est pas disponible. L’exception recommandée à lever est InvalidOperationException.

L’implémentation peut également lever des exceptions si l’un des arguments dont l’extension de balisage personnalisée a besoin pour fournir une valeur est null, n’est pas valide pour son type de données ou ne contient pas une valeur que l’extension de balisage est capable de traiter. L’exception recommandée à lever est InvalidOperationException.

S’applique à

Voir aussi