共用方式為


XAML 中的泛型

中實作的 System.Xaml .NET XAML 服務提供使用泛型 CLR 類型的支援。 此支援包含將泛型的條件約束指定為類型引數,並藉由呼叫泛型集合案例的適當 Add 方法來強制執行條件約束。 本主題描述在 XAML 中使用和參考泛型型別的各個層面。

x:TypeArguments

x:TypeArguments 是 XAML 語言所定義的指示詞。 當它作為泛型型別所支援的 XAML 類型成員時, x:TypeArguments 會將泛型的限制型別引數傳遞至支援建構函式。 如需 與 .NET XAML 服務使用 x:TypeArguments 相關的參考語法,其中包含語法範例,請參閱 x:TypeArguments 指示詞

由於 x:TypeArguments 採用字串且具有類型轉換器備份,因此通常會在 XAML 使用方式中宣告為屬性。

在 XAML 節點資料流程中,可以從 節點資料流程中的位置取得 XamlType.TypeArgumentsStartObjectx:TypeArguments 宣告的資訊。 的傳回值 XamlType.TypeArguments 是值清單 XamlType 。 藉由呼叫 XamlType.IsGeneric ,判斷 XAML 類型是否代表泛型型別。

XAML 中泛型的規則和語法慣例

在 XAML 中,泛型型別必須一律以限制泛型表示。 未受限制的泛型絕不會出現在 XAML 類型系統或 XAML 節點資料流程中,而且無法在 XAML 標記中表示。 泛型可以在 XAML 屬性語法中參考,當它是所參考 x:TypeArguments 之泛型的巢狀類型條件約束,或提供泛型型別的 CLR 型別參考的情況下 x:Type ,可以參考泛型型別。 透過 XamlTypeTypeConverter .NET XAML 服務所定義的類別支援參考泛型。

藉由改變一般 MSIL / CLR 語法慣例所 XamlTypeTypeConverter 啟用的 XAML 屬性語法慣例,該慣例會針對泛型型別和條件約束使用角括弧,並改為取代條件約束容器的括弧。 如需範例,請參閱 x:TypeArguments 指示詞

泛型和 XAML 2009 功能

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

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

WPF 中的泛型支援

針對特別以 WPF 為目標的 XAML 2006 使用方式, 也必須在與 相同的元素 x:TypeArguments 上提供 x:Class ,而且該元素必須是 XAML 檔中的根項目。 根項目必須對應至至少有一個類型引數的泛型型別。 例如 PageFunction<T>

支援泛型用法的可能因應措施包括定義可傳回泛型型別的自訂標記延伸,或提供衍生自泛型型別的包裝類別定義,但會將泛型條件約束壓平在其本身的類別定義中。

在 WPF 中,您可以搭配 使用 XAML 2009 功能, x:TypeArguments 但僅適用于鬆散的 XAML(未編譯標記的 XAML)。 WPF 之編譯標記的 XAML 和 BAML 形式的 XAML 目前不支援 XAML 2009 關鍵字和功能。

適用于 .NET Framework 3.5 的 Windows Workflow Foundation 中的自訂工作流程不支援一般 XAML 使用方式。

另請參閱