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 泛型條件約束的一般類型(例如 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)" ...> 具現化具有 Queue<T> 內含條件約束 KeyValuePair<TKey,TValue> 型別引數 StringString 的新 。

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。

另請參閱