MarkupExtension.ProvideValue(IServiceProvider) Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Při implementaci v odvozené třídě vrátí objekt, který je poskytnut jako hodnota cílové vlastnosti pro toto rozšíření značek.
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
Parametry
- serviceProvider
- IServiceProvider
Pomocná rutina poskytovatele služeb, která může poskytovat služby pro rozšíření značek.
Návraty
Hodnota objektu, která se má nastavit u vlastnosti, ve které je rozšíření použito.
Poznámky
Když procesor XAML zpracovává uzel typu a hodnotu člena, která je rozšířením značek, vyvolá metodu ProvideValue tohoto rozšíření značek a zapíše výsledek do grafu objektu nebo serializačního streamu. Zapisovač objektů XAML předává kontext služby každé takové implementaci prostřednictvím parametru serviceProvider
.
Další informace o implementaci ProvideValue ve vlastním rozšíření značek najdete v části Poznámky implementátorům.
Poznámky k využití WPF
Důležité
Třídy WPF, které mají specifické interakce s operacemi sady značek, by se neměly spoléhat na IReceiveMarkupExtension implementaci rozhraní .NET Framework 4. Místo toho použijte XamlSetMarkupExtensionAttributezpětná volání s atributem -attributed.
Poznámky pro implementátory
Mezi běžné služby vrácené výchozím poskytovatelem služeb, který je obvykle k dispozici pro vlastní nebo existující MarkupExtension implementaci, patří následující primární služby.
IProvideValueTarget hlásí odkaz na objekt a identifikátor vlastnosti z kontextu, ve kterém se používá rozšíření značek.
IXamlTypeResolver zpřístupňuje službu, která paralelně popisuje obecné chování při zápisu objektů XAML, které může poskytovat Type objekt založený na názvu typu XAML. Název může volitelně obsahovat předponu pro mapovaný obor názvů XAML.
IXamlSchemaContextProvider zpřístupňuje aktivní kontext schématu XAML přímo. Z hlášeného XamlSchemaContextobjektu můžete získat informace o kontextu schématu XAML, například jak jsou sestavení mapována pro podporu typů, upřednostňovaná předpona v sestaveních, seznamy každého z nich XamlType v sestavení atd.
Mezi další služby dostupné pro specializovanější scénáře rozšíření přirážky patří:
Implementace ProvideValue(IServiceProvider) nástroje můžou parametr ignorovat serviceProvider
. To je možné v některých základních scénářích, kdy se k vrácení hodnoty nevyžaduje vůbec žádný kontext.
Při typickém použití poskytují služby XAML rozhraní .NET Framework a implementované zapisovače objektů XAML poskytovatele služeb pro všechny metody převaděče hodnot, které jsou vyvolány během zpracování XAML. Z důvodu odolnosti byste ale měli zadat cesty kódu pro hodnoty null jak pro samotného poskytovatele služby, tak pro všechny požadované služby. K hodnotám Null může dojít v případě, že se rozšíření značek použije v situaci, kdy není k dispozici typická podpora služby poskytovaná infrastrukturou procesoru XAML.
Další informace o dostupných službách z kontextu poskytovatele služeb XAML a o tom, jak je používat, najdete v tématu Převaděče typů a rozšíření značek pro XAML.
Implementace, které vyžadují, aby určitá služba byla k dispozici, aby se dosáhlo užitečného ProvideValue(IServiceProvider) výsledku, se očekává, že v případě, že tato služba není k dispozici, vyvolá výjimky. Doporučená výjimka, která se má vyvolat, je InvalidOperationException.
Implementace může také vyvolat výjimky, pokud jeden z argumentů, které vlastní rozšíření značek potřebuje k poskytnutí hodnoty null, je neplatný pro datový typ nebo neobsahuje hodnotu, kterou rozšíření značek je schopno zpracovat. Doporučená výjimka, která se má vyvolat, je InvalidOperationException.