Udostępnij za pośrednictwem


MarkupExtension.ProvideValue(IServiceProvider) Metoda

Definicja

Po zaimplementowaniu w klasie pochodnej zwraca obiekt podany jako wartość właściwości docelowej dla tego rozszerzenia znaczników.

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

Pomocnik dostawcy usług, który może świadczyć usługi dla rozszerzenia znaczników.

Zwraca

Wartość obiektu, która ma zostać ustawiona we właściwości, w której zastosowano rozszerzenie.

Uwagi

Gdy procesor XAML przetwarza węzeł typu i wartość składową, która jest rozszerzeniem znaczników, wywołuje ProvideValue metodę tego rozszerzenia znaczników i zapisuje wynik w grafie obiektu lub strumieniu serializacji. Składnik zapisywania obiektów XAML przekazuje kontekst usługi do każdej takiej implementacji za pomocą parametru serviceProvider .

Zobacz sekcję "Uwagi do implementatorów", aby uzyskać więcej informacji na temat implementowania ProvideValue w niestandardowym rozszerzeniu znaczników.

Uwagi o użyciu WPF

Ważne

Klasy WPF, które mają określone interakcje z operacjami zestawu znaczników, nie powinny polegać na IReceiveMarkupExtension implementacji .NET Framework 4. Zamiast tego należy użyć XamlSetMarkupExtensionAttributewywołań zwrotnych przypisanych.

Uwagi dotyczące implementowania

Typowe usługi zwracane przez domyślnego dostawcę usług, który jest zwykle dostępny dla niestandardowej lub istniejącej MarkupExtension implementacji, obejmują następujące usługi podstawowe.

Potencjalnie implementacje ProvideValue(IServiceProvider) programu mogą ignorować serviceProvider parametr. Jest to opłacalne w przypadku niektórych podstawowych scenariuszy, w których do zwracania wartości nie jest wymagany żaden kontekst.

W typowym użyciu .NET Framework usług XAML i zaimplementowanych składników zapisywania obiektów XAML zapewni dostawcę usług do wszystkich metod konwertera wartości wywoływanych podczas przetwarzania XAML. Jednak w celu zapewnienia niezawodności należy podać ścieżki kodu dla wartości null zarówno dla samego dostawcy usług, jak i dla dowolnej żądanej usługi. Wartości null mogą wystąpić, jeśli rozszerzenie znaczników jest stosowane w sytuacji, gdy typowa obsługa usługi zapewniana przez infrastrukturę procesora XAML jest niedostępna.

Aby uzyskać więcej informacji na temat dostępnych usług z kontekstu dostawcy usług XAML i sposobu ich używania, zobacz Konwertery typów i Rozszerzenia znaczników dla języka XAML.

Implementacje, które wymagają udostępnienia określonej usługi w celu wygenerowania przydatnego ProvideValue(IServiceProvider) wyniku, powinny zgłaszać wyjątki, jeśli ta usługa nie jest dostępna. Zalecanym wyjątkiem do zgłoszenia jest InvalidOperationException.

Implementacja może również zgłaszać wyjątki, jeśli jeden z argumentów, których wymaga rozszerzenie znaczników niestandardowych w celu zapewnienia wartości null, jest nieprawidłowe dla jego typu danych lub nie zawiera wartości, którą rozszerzenie znaczników może przetwarzać. Zalecanym wyjątkiem do zgłoszenia jest InvalidOperationException.

Dotyczy

Zobacz też