Sdílet prostřednictvím


MarkupExtension.ProvideValue(IServiceProvider) Metoda

Definice

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.

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.

Platí pro

Viz také