Bagikan melalui


x:Arahan TypeArguments

Meneruskan argumen jenis pembatasan generik ke konstruktor jenis generik.

Penggunaan Atribut XAML

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

Nilai XAML

Nilai Deskripsi
object Deklarasi elemen objek dari jenis XAML, yang didukung oleh jenis generik CLR. Jika object mengacu pada jenis XAML yang bukan dari namespace XAML default, object memerlukan awalan untuk menunjukkan namespace XAML di mana object ada.
typeString String yang mendeklarasikan satu atau beberapa nama jenis XAML sebagai string, yang menyediakan argumen jenis untuk jenis generik CLR. Lihat Keterangan untuk catatan sintaks tambahan.

Keterangan

Dalam kebanyakan kasus, jenis XAML yang digunakan sebagai item informasi dalam typeString string diawali. Jenis umum batasan generik CLR (misalnya, Int32 dan String) berasal dari pustaka kelas dasar CLR. Pustaka tersebut tidak dipetakan ke namespace XAML default khusus kerangka kerja umum, dan oleh karena itu, memerlukan pemetaan awalan untuk penggunaan XAML.

Anda dapat menentukan lebih dari satu nama jenis XAML dengan menggunakan pemisah koma.

Jika batasan generik sendiri menggunakan jenis generik, argumen jenis batasan berlapis dapat dimuat oleh tanda kurung ().

Perhatikan bahwa definisi x:TypeArguments ini khusus untuk Layanan XAML .NET dan menggunakan backing CLR. Definisi tingkat bahasa dapat ditemukan di [MS-XAML] Bagian 7.3.11.

Contoh Penggunaan

Untuk contoh ini, asumsikan bahwa definisi namespace XAML berikut dinyatakan:

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

Daftar<String>

<scg:List x:TypeArguments="sys:String" ...> membuat instans baru List<T> dengan String argumen jenis.

String Kamus,String<>

<scg:Dictionary x:TypeArguments="sys:String,sys:String" ...> membuat instans baru Dictionary<TKey,TValue> dengan dua String argumen jenis.

Antrean<KeyValuePair<String,String>>

<scg:Queue x:TypeArguments="scg:KeyValuePair(sys:String,sys:String)" ...> membuat instans baru Queue<T> yang memiliki batasan KeyValuePair<TKey,TValue> dengan argumen String jenis batasan dalam dan String.

Penggunaan XAML Generik XAML XAML dan WPF 2006

Untuk penggunaan XAML 2006, dan XAML yang digunakan untuk aplikasi WPF, batasan berikut ada untuk x:TypeArguments dan penggunaan jenis generik dari XAML secara umum:

  • Hanya elemen akar file XAML yang dapat mendukung penggunaan XAML generik yang mereferensikan jenis generik.

  • Elemen akar harus memetakan ke jenis generik dengan setidaknya satu argumen jenis. Contohnya PageFunction<T>. Fungsi halaman adalah skenario utama untuk dukungan penggunaan generik XAML di WPF.

  • Elemen akar elemen objek XAML untuk generik juga harus mendeklarasikan kelas parsial menggunakan x:Class. Ini berlaku bahkan jika menentukan tindakan build WPF.

  • x:TypeArguments tidak dapat mereferensikan batasan generik berlapis.

XAML 2009 atau XAML 2006 tanpa Dependensi WPF 3.0 atau WPF 3.5

Dalam Layanan XAML .NET untuk XAML 2006 atau XAML 2009, pembatasan terkait WPF pada penggunaan XAML generik dilonggarkan. Anda dapat membuat instans elemen objek generik pada posisi apa pun dalam markup XAML yang dapat didukung oleh sistem jenis pendukung dan model objek.

Jika Anda menggunakan XAML 2009 alih-alih memetakan jenis dasar CLR untuk mendapatkan jenis XAML untuk primitif bahasa umum, Anda dapat menggunakan Jenis Bawaan untuk Primitif Bahasa XAML Umum sebagai item informasi dalam typeString. Misalnya, Anda dapat mendeklarasikan hal berikut (pemetaan awalan tidak ditampilkan, tetapi x adalah namespace XAML bahasa XAML untuk XAML 2009):

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

Di WPF dan saat menargetkan .NET Framework 4 atau .NET Core 3.0 (atau yang lebih baru), Anda dapat menggunakan fitur XAML 2009 bersama-sama tetapi x:TypeArguments hanya untuk XAML longgar (XAML yang tidak dikompilasi markup). XAML yang dikompilasi markup untuk WPF dan bentuk BAML XAML saat ini tidak mendukung kata kunci dan fitur XAML 2009. Jika Anda perlu menandai kompilasi XAML, Anda harus beroperasi di bawah batasan yang tercantum di bagian Penggunaan XAML 2006 dan WPF Generic XAML. BAML hanya didukung dalam .NET Framework.

Baca juga