x:TypeArguments 指示詞
將泛型型別的限制型別自變數傳遞至泛型型別的建構函式。
XAML 屬性使用方式
<object x:TypeArguments="typeString" .../>
XAML 值
價值 | 描述 |
---|---|
object |
XAML 類型的物件專案宣告,由 CLR 泛型型別支援。 如果 object 參照不是來自預設 XAML 命名空間的 XAML 類型,object 需要前置詞來指出 object 存在的 XAML 命名空間。 |
typeString |
字串,會將一或多個 XAML 型別名稱宣告為字串,以提供 CLR 泛型型別的型別自變數。 如需其他語法注意事項,請參閱。 |
言論
在大部分情況下,做為 typeString
字串中信息專案的 XAML 類型都會加上前置詞。 CLR 泛型條件約束的典型類型(例如,Int32 和 String)來自 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>String 和 String的新 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。