MarkupExtension.ProvideValue(IServiceProvider) Metod
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
När det implementeras i en härledd klass returnerar ett objekt som anges som värdet för målegenskapen för det här markeringstillägget.
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
Parametrar
- serviceProvider
- IServiceProvider
En tjänstleverantörshjälp som kan tillhandahålla tjänster för påläggstillägget.
Returer
Det objektvärde som ska anges för egenskapen där tillägget används.
Kommentarer
När en XAML-processor bearbetar en typnod och ett medlemsvärde som är ett markeringstillägg anropas ProvideValue metoden för det markeringstillägget och skriver resultatet till objektdiagrammet eller serialiseringsströmmen. XAML-objektskrivaren skickar tjänstkontexten till varje sådan implementering via parametern serviceProvider .
Mer information om hur du implementerar ProvideValue i ett anpassat markeringstillägg finns i avsnittet "Anteckningar till implementerare".
WPF-användningsanteckningar
Important
WPF klasser som har specifika interaktioner med markeringsuppsättningsåtgärder bör inte förlita sig på IReceiveMarkupExtension för en implementering av .NET Framework 4. Använd XamlSetMarkupExtensionAttribute-attributed callbacks i stället.
Anteckningar till implementerare
Vanliga tjänster som returneras av standardtjänstleverantören och som vanligtvis är tillgängliga för en anpassad eller befintlig MarkupExtension implementering inkluderar följande primära tjänster.
IProvideValueTarget rapporterar objektreferensen och en egenskapsidentifierare från kontexten där markeringstillägget används
IXamlTypeResolver exponerar en tjänst som paralleller det allmänna XAML-objektskrivningsbeteendet som kan ge en Type baserad på ett XAML-typnamn. Namnet kan också innehålla ett prefix för ett mappat XAML-namnområde.
IXamlSchemaContextProvider exponerar den aktiva XAML-schemakontexten direkt. Från den rapporterade XamlSchemaContextkan du hämta XAML-schemakontextinformation, till exempel hur sammansättningar mappas för typstöd, föredragna prefix i sammansättningar, listor över var och XamlType en i en sammansättning och så vidare.
Andra tjänster som är tillgängliga för mer specialiserade scenarier med påläggstillägg är:
Implementeringar av ProvideValue(IServiceProvider) kan eventuellt ignorera parametern serviceProvider . Detta är praktiskt för vissa grundläggande scenarier, där ingen kontext alls krävs för att returnera ett värde.
I vanlig användning tillhandahåller .NET Framework XAML Services och de implementerade XAML-objektskrivarna en tjänstleverantör till alla värdekonverteraremetoder som anropas under XAML-bearbetningen. För robusthet bör du dock ange kodsökvägar för null-värden både för själva tjänstleverantören och för alla begärda tjänster. Null-värden kan inträffa om markeringstillägget tillämpas i en situation där den typiska tjänstsupporten som tillhandahålls av en XAML-processorinfrastruktur inte är tillgänglig.
Mer information om tillgängliga tjänster från XAML-tjänstproviderns kontext och hur du använder dem finns i Type Converters and Markup Extensions for XAML (Typkonverterare och markeringstillägg för XAML).
Implementeringar som kräver att en viss tjänst är tillgänglig för att skapa ett användbart ProvideValue(IServiceProvider) resultat förväntas utlösa undantag om tjänsten inte är tillgänglig. Det rekommenderade undantaget för att utlösa är InvalidOperationException.
Implementeringen kan också utlösa undantag om ett av argumenten som det anpassade markeringstillägget behöver för att ange ett värde är null, är ogiltigt för datatypen eller inte innehåller ett värde som markeringstillägget kan bearbeta. Det rekommenderade undantaget för att utlösa är InvalidOperationException.