MarkupExtension.ProvideValue(IServiceProvider) 方法

定義

在衍生類別中實作時,傳回物件,這個物件提供為這個標記延伸的目標屬性值。

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

參數

serviceProvider
IServiceProvider

可以為標記延伸提供服務的服務提供者 Helper。

傳回

要在套用延伸的屬性上設定的物件值。

備註

當 XAML 處理器處理屬於標記延伸的類型節點和成員值時,它會叫 ProvideValue 用該標記延伸的方法,並將結果寫入物件圖形或串行化數據流。 XAML 物件寫入器會透過 參數將服務內容傳遞給每個這類實作 serviceProvider

如需如何在自定義標記延伸中實 ProvideValue 作的詳細資訊,請參閱一節。

WPF 使用注意事項

重要

與標記集作業有特定互動的 WPF 類別不應依賴 IReceiveMarkupExtension .NET Framework 4 實作。 請改用 XamlSetMarkupExtensionAttribute-attributed 回呼。

給實施者的注意事項

默認服務提供者所傳回的常見服務,通常可供自定義或現有 MarkupExtension 實作使用,包括下列主要服務。

的實作 ProvideValue(IServiceProvider) 可能會忽略 serviceProvider 參數。 這適用於某些基本案例,其中完全不需要任何內容才能傳回值。

在一般用法中,.NET Framework XAML 服務和實作的 XAML 物件寫入器會將服務提供者提供給 XAML 處理期間叫用的所有值轉換器方法。 不過,為了保持強固性,您應該為服務提供者本身和任何要求的服務提供 Null 值的程式代碼路徑。 如果您的標記延伸在 XAML 處理器基礎結構所提供的一般服務支援無法使用的情況下,可能會發生 Null 值。

如需 XAML 服務提供者內容中可用服務及其使用方式的詳細資訊,請參閱 XAML 的型別轉換器和標記延伸

需要提供特定服務的實作,才能產生有用的 ProvideValue(IServiceProvider) 結果,如果無法使用該服務,則預期會擲回例外狀況。 建議擲回的例外狀況為 InvalidOperationException

如果自定義標記延伸所需的其中一個自變數為 Null、其數據類型無效,或不包含標記延伸能夠處理的值,實作也可能擲回例外狀況。 建議擲回的例外狀況為 InvalidOperationException

適用於

另請參閱