x:Type 標記延伸

提供 CLR Type 物件,這個物件是指定之 XAML 型別的基礎型別。

XAML Attribute Usage

<object property="{x:Type prefix:typeNameValue}" .../>

XAML 物件項目用法

<x:Type TypeName="prefix:typeNameValue"/>

XAML 值

Description
prefix 選擇性。 對應非預設 XAML 命名空間的前置詞。 通常不需要指定前置詞。 請參閱<備註>。
typeNameValue 必要。 可解析為目前預設 XAML 命名空間的類型名稱;如果 提供 ,則為 或指定的對應前置詞 prefix

備註

標記 x:Type 延伸具有與 C# 中的 運算子類似的函 typeof() 式,或 GetType Microsoft Visual Basic 中的 運算子。

標記 x:Type 延伸會針對採用 型別 Type 的屬性提供 from-string 轉換行為。 輸入是 XAML 類型。 輸入 XAML 類型與輸出 CLR Type 之間的關聯性在於,輸出 TypeUnderlyingType 輸入 XamlType 的 ,在根據 XAML 架構內容 IXamlTypeResolver 和內容所提供的服務來查閱必要 XamlType 專案之後。

在 .NET XAML 服務中,這個標記延伸的處理是由 TypeExtension 類別所定義。

在特定架構實作中,接受 Type 做為值的一些屬性可以直接接受類型的名稱(型 Name 別的字串值)。 不過,實作此行為是複雜的案例。 如需範例,請參閱後續的一節。

屬性 (Attribute) 語法是最常搭配這個標記延伸來使用的語法。 x:Type 識別項字串後所提供的字串語彙基元,是指派做為基礎 TypeName 延伸類別的 TypeExtension 值。 在以 CLR 型別為基礎的 .NET XAML 服務的預設 XAML 架構內容下,此屬性的值是 Name 所需類型的 ,或包含 Name 前面加上非預設 XAML 命名空間對應的前置詞。

標記 x:Type 延伸可用於物件專案語法。 在此情況下,需要指定 屬性的值 TypeName ,才能正確初始化延伸模組。

標記 x:Type 延伸也可以當做詳細資訊屬性使用;不過,這項使用並不常見: <object property="{x:Type TypeName=typeNameValue}" .../>

WPF 使用方式注意事項

預設 XAML 命名空間和類型對應

WPF 程式設計的預設 XAML 命名空間包含一般 XAML 案例所需的大部分 XAML 類型;因此,在參考 XAML 類型值時,您通常可以避免前置詞。 如果您從自訂群組件或 WPF 元件中存在的類型參考類型,但來自未對應至預設 XAML 命名空間的 CLR 命名空間,您可能需要對應前置詞。 如需前置詞、XAML 命名空間和對應 CLR 命名空間的詳細資訊,請參閱 WPF XAML 的 XAML 命名空間和命名空間對應。

支援 Typename-as-String 的類型屬性

WPF 支援技術,可指定類型的 Type 某些屬性值,而不需要 x:Type 標記延伸使用方式。 相反地,您可以將值指定為命名型別的字串。 以下是 ControlTemplate.TargetTypeStyle.TargetType 的範例。 不支援此行為,但無法透過類型轉換器或標記延伸來提供。 相反地,這是透過 FrameworkElementFactory 實作的延遲行為。

Silverlight 支援類似的慣例。 事實上,Silverlight 目前 {x:Type} 不支援其 XAML 語言支援,而且在少數旨在支援 WPF-Silverlight XAML 移轉的情況下,不接受 {x:Type} 使用方式。 因此,typename-as-string 行為是內建至所有 Silverlight 原生屬性評估,其中 Type 是 值。

XAML 2009

XAML 2009 提供泛型型別的額外支援,並修改 的功能行為 x:TypeArguments ,並提供 x:Type 此支援。

  • x:TypeArguments 和泛型物件具現化的相關聯物件專案可以位於根以外的專案上。 如需詳細資訊,請參閱 x:TypeArguments 指示詞 一節。

  • XAML 2009 支援在標記中指定泛型型別條件約束的語法。 這可以由 x:TypeArguments 、by x:Type 或兩個功能組合使用。

  • 處理 XAML 2009 以進行載入時,WPF XAML 實作也會將這項功能新增至使用 類型 Type 的特定架構屬性的隱含型別轉換行為。

在 WPF 中,您可以使用 XAML 2009 功能,但僅適用于鬆散的 XAML(未編譯標記的 XAML)。 WPF 之編譯標記的 XAML 和 BAML 形式的 XAML 目前不支援 XAML 2009 關鍵字和功能。

另請參閱