x:TypeArguments 指示詞
將泛型型別的限制型別引數傳遞至泛型型別的建構函式。
XAML Attribute Usage
<object x:TypeArguments="typeString" .../>
XAML 值
值 | Description |
---|---|
object |
XAML 類型的物件專案宣告,由 CLR 泛型型別支援。 如果 object 參考不是來自預設 XAML 命名空間的 XAML 類型, object 則需要前置詞來指出存在的 XAML 命名空間 object 。 |
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)" ...>
具現化具有 Queue<T> 內含條件約束 KeyValuePair<TKey,TValue> 型別引數 String 和 String 的新 。
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 之編譯標記的 XAML 和 BAML 形式的 XAML 目前不支援 XAML 2009 關鍵字和功能。 如果您需要標記編譯 XAML,您必須根據 XAML 2006 和 WPF 一般 XAML 使用 方式一節中所述 的限制操作。 只有 .NET Framework 才支援 BAML。