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 之間的關聯性在於,輸出 Type 是 UnderlyingType 輸入 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.TargetType 和 Style.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
、byx:Type
或兩個功能組合使用。處理 XAML 2009 以進行載入時,WPF XAML 實作也會將這項功能新增至使用 類型 Type 的特定架構屬性的隱含型別轉換行為。
在 WPF 中,您可以使用 XAML 2009 功能,但僅適用于鬆散的 XAML(未編譯標記的 XAML)。 WPF 之編譯標記的 XAML 和 BAML 形式的 XAML 目前不支援 XAML 2009 關鍵字和功能。