MarkupExtension.ProvideValue(IServiceProvider) Metodo

Definizione

In caso di implementazione in una classe derivata, restituisce un oggetto fornito come valore della proprietà di destinazione per questa estensione di markup.

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

Parametri

serviceProvider
IServiceProvider

Helper del provider di servizi che può fornire servizi per l'estensione di markup.

Restituisce

Valore dell'oggetto da impostare sulla proprietà in cui viene applicata l'estensione.

Commenti

Quando un processore XAML elabora un nodo di tipo e un valore membro che è un'estensione di markup, richiama il ProvideValue metodo dell'estensione di markup e scrive il risultato nel grafico oggetto o nel flusso di serializzazione. Il writer di oggetti XAML passa il contesto del servizio a ogni implementazione tramite il serviceProvider parametro .

Per altre informazioni su come implementare ProvideValue in un'estensione di markup personalizzata, vedere la sezione "Notes to Implementers".

Note sull'utilizzo di WPF

Importante

Le classi WPF con interazioni specifiche con le operazioni del set di markup non devono basarsi su IReceiveMarkupExtension per un'implementazione di .NET Framework 4. Usare XamlSetMarkupExtensionAttributeinvece callback con attributi.

Note per gli implementatori

I servizi comuni restituiti dal provider di servizi predefinito che in genere è disponibile per un'implementazione personalizzata o esistente MarkupExtension includono i servizi primari seguenti.

Potenzialmente, le implementazioni di ProvideValue(IServiceProvider) possono ignorare il serviceProvider parametro . Ciò è valido per alcuni scenari di base, in cui non è necessario alcun contesto per restituire un valore.

In genere, i servizi XAML di .NET Framework e i writer di oggetti XAML implementati forniranno un provider di servizi a tutti i metodi del convertitore di valori richiamati durante l'elaborazione XAML. Tuttavia, per garantire l'affidabilità, è necessario fornire percorsi di codice per i valori Null sia per il provider di servizi stesso che per qualsiasi servizio richiesto. I valori Null possono verificarsi se l'estensione di markup viene applicata in una circostanza in cui il supporto tipico del servizio fornito da un'infrastruttura del processore XAML non è disponibile.

Per altre informazioni sui servizi disponibili dal contesto del provider di servizi XAML e su come usarli, vedi Convertitori di tipi ed estensioni di markup per XAML.

Le implementazioni che richiedono la disponibilità di un determinato servizio per produrre un risultato utile ProvideValue(IServiceProvider) generano eccezioni se tale servizio non è disponibile. L'eccezione consigliata da generare è InvalidOperationException.

L'implementazione può anche generare eccezioni se uno degli argomenti necessari all'estensione di markup personalizzata per fornire un valore è Null, non è valido per il tipo di dati o non contiene un valore che l'estensione di markup è in grado di elaborare. L'eccezione consigliata da generare è InvalidOperationException.

Si applica a

Vedi anche