共用方式為


x:TypeArguments 指示詞

將泛型型別的限制型別自變數傳遞至泛型型別的建構函式。

XAML 屬性使用方式

<object x:TypeArguments="typeString" .../>

XAML 值

價值 描述
object XAML 類型的物件專案宣告,由 CLR 泛型型別支援。 如果 object 參照不是來自預設 XAML 命名空間的 XAML 類型,object 需要前置詞來指出 object 存在的 XAML 命名空間。
typeString 字串,會將一或多個 XAML 型別名稱宣告為字串,以提供 CLR 泛型型別的型別自變數。 如需其他語法注意事項,請參閱。

言論

在大部分情況下,做為 typeString 字串中信息專案的 XAML 類型都會加上前置詞。 CLR 泛型條件約束的典型類型(例如,Int32String)來自 CLR 基類庫。 這些連結庫不會對應至一般架構特定的預設 XAML 命名空間,因此需要 XAML 使用方式的前置詞對應。

您可以使用逗號分隔符來指定多個 XAML 類型名稱。

如果泛型條件約束本身使用泛型類型,巢狀條件約束類型自變數可以包含括號 ()。

請注意,此 x:TypeArguments 的定義是 .NET XAML 服務及使用 CLR 備份的特定定義。 [MS-XAML] 區段 7.3.11中找到語言層級定義。

使用範例

在這些範例中,假設宣告了下列 XAML 命名空間定義:

xmlns:sys="clr-namespace:System;assembly=mscorlib"
xmlns:scg="clr-namespace:System.Collections.Generic;assembly=mscorlib"

列出字串<>

<scg:List x:TypeArguments="sys:String" ...> 具現化具有 String 型別自變數的新 List<T>

字典<字串,字串>

<scg:Dictionary x:TypeArguments="sys:String,sys:String" ...> 具現化具有兩個 String 型別自變數的新 Dictionary<TKey,TValue>

Queue<KeyValuePair<String,String>>

<scg:Queue x:TypeArguments="scg:KeyValuePair(sys:String,sys:String)" ...> 具現化具有內部條件約束型別自變數 KeyValuePair<TKey,TValue>StringString的新 Queue<T>

XAML 2006 和 WPF 一般 XAML 用法

針對 XAML 2006 使用方式,以及 WPF 應用程式所使用的 XAML,一般而言,XAML 有下列限制 x:TypeArguments 和泛型類型用法:

  • 只有 XAML 檔案的根元素可以支援參考泛型型別的泛型 XAML 使用方式。

  • 根元素必須對應至至少有一個類型自變數的泛型型別。 例如 PageFunction<T>。 頁面函式是 WPF 中 XAML 一般使用方式支援的主要案例。

  • 泛型的根元素 XAML 物件項目也必須使用 x:Class宣告部分類別。 即使定義 WPF 建置動作,也是如此。

  • x:TypeArguments 無法參考巢狀泛型條件約束。

XAML 2009 或 XAML 2006 沒有 WPF 3.0 或 WPF 3.5 相依性

在 XAML 2006 或 XAML 2009 的 .NET XAML 服務中,泛型 XAML 使用方式的 WPF 相關限制會放寬。 您可以在支援型別系統和物件模型可支援之 XAML 標記中的任何位置具現化泛型物件專案。

如果您使用 XAML 2009,而不是對應 CLR 基底類型來取得通用語言基本類型的 XAML 類型,您可以使用 Common XAML Language Primitives 的內建類型, 做為 typeString中的資訊專案。 例如,您可以宣告下列專案(未顯示前置詞對應,但 x 是 XAML 2009 的 XAML 語言 XAML 命名空間):

<my:BusinessObject x:TypeArguments="x:String,x:Int32"/>

在 WPF 中,當以 .NET Framework 4 或 .NET Core 3.0 (或更新版本)為目標時,您可以使用 XAML 2009 功能搭配 x:TypeArguments,但僅適用於鬆散的 XAML(未編譯標記的 XAML)。 WPF 和 BAML 形式的標記編譯 XAML 目前不支援 XAML 2009 關鍵詞和功能。 如果您需要標記編譯 XAML,您必須根據 XAML 2006 和 WPF 一般 XAML 使用方式 一節中所述的限制操作。 只有 .NET Framework 才支援BAML。

另請參閱