x:TypeArguments Yönergesi

Bir genelin kısıtlayıcı tür bağımsız değişkenlerini genel türün oluşturucusna geçirir.

XAML Öznitelik Kullanımı

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

XAML Değerleri

Değer Tanım
object CLR genel türü tarafından yedeklenen bir XAML türünün nesne öğesi bildirimi. Varsayılan XAML ad alanından olmayan bir XAML türüne başvuruyorsa object , object var olan object XAML ad alanını belirtmek için bir ön ek gerektirir.
typeString ClR genel türü için tür bağımsız değişkenlerini sağlayan bir veya daha fazla XAML türü adını dize olarak bildiren bir dize. Ek söz dizimi notları için bkz. Açıklamalar.

Açıklamalar

Çoğu durumda, bir typeString dizede bilgi öğesi olarak kullanılan XAML türleri ön eklenir. Tipik CLR genel kısıtlama türleri (örneğin ve Int32String) CLR temel sınıf kitaplıklarından gelir. Bu kitaplıklar tipik çerçeveye özgü varsayılan XAML ad alanlarına eşlenmez ve bu nedenle XAML kullanımı için bir ön ek eşlemesi gerektirir.

Virgül sınırlayıcı kullanarak birden fazla XAML türü adı belirtebilirsiniz.

Genel kısıtlamaların kendileri genel türler kullanıyorsa, iç içe kısıtlama türü bağımsız değişkenleri parantez () tarafından içerebilir.

bu tanımının x:TypeArguments .NET XAML Hizmetleri'ne özgü olduğunu ve CLR yedeklemesi kullandığını unutmayın. Dil düzeyi tanımı [MS-XAML] Bölüm 7.3.11'de bulunabilir.

Kullanım Örnekleri

Bu örnekler için aşağıdaki XAML ad alanı tanımlarının bildirildiğini varsayalım:

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

Liste<Dizesi>

<scg:List x:TypeArguments="sys:String" ...> tür bağımsız değişkeniyle yeni List<T> bir String örnek oluşturur.

Sözlük<Dizesi,Dize>

<scg:Dictionary x:TypeArguments="sys:String,sys:String" ...>iki String tür bağımsız değişkenle yeni Dictionary<TKey,TValue> bir örnek oluşturur.

Queue<KeyValuePair<Dizesi,Dize>>

<scg:Queue x:TypeArguments="scg:KeyValuePair(sys:String,sys:String)" ...>, ve iç kısıtlama türü bağımsız değişkenleriyle StringString kısıtlaması KeyValuePair<TKey,TValue> olan yeni Queue<T> bir örneği oluşturur.

XAML 2006 ve WPF Genel XAML Kullanımları

WPF uygulamaları için kullanılan XAML XAML 2006 kullanımı ve XAML için, genel olarak XAML'den ve genel tür kullanımları için x:TypeArguments aşağıdaki kısıtlamalar vardır:

  • Yalnızca bir XAML dosyasının kök öğesi, genel bir türe başvuran genel bir XAML kullanımını destekleyebilir.

  • Kök öğe, en az bir tür bağımsız değişkenine sahip genel bir türe eşlenmelidir. PageFunction<T> bunun bir örneğidir. Sayfa işlevleri, WPF'de XAML genel kullanım desteği için birincil senaryodur.

  • Genel için kök öğe XAML nesne öğesi de kullanarak x:Classkısmi bir sınıf bildirmelidir. WPF derleme eylemi tanımlansa bile bu durum geçerlidir.

  • x:TypeArguments iç içe genel kısıtlamalara başvuramaz.

WPF 3.0 veya WPF 3.5 Bağımlılığı Olmayan XAML 2009 veya XAML 2006

XAML 2006 veya XAML 2009 için .NET XAML Hizmetleri'nde, genel XAML kullanımıyla ilgili WPF ile ilgili kısıtlamalar gevşetilir. XAML işaretlemesinde, yedekleme türü sisteminin ve nesne modelinin destekleyebilecekleri herhangi bir konumda genel bir nesne öğesinin örneğini oluşturabilirsiniz.

Ortak dil temel öğeleri için XAML türlerini elde etmek üzere CLR temel türlerini eşlemek yerine XAML 2009 kullanırsanız, içinde bilgi öğeleri typeStringolarak Ortak XAML Dil Temel Öğeleri için Yerleşik Türler'i kullanabilirsiniz. Örneğin, aşağıdakileri bildirebilirsiniz (ön ek eşlemeleri gösterilmez, ancak x, XAML 2009 için XAML dili XAML ad alanıdır):

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

WPF'de ve .NET Framework 4 veya .NET Core 3.0 'ı (veya üzerini) hedeflerken, XAML 2009 özelliklerini birlikte x:TypeArguments kullanabilirsiniz, ancak yalnızca gevşek XAML (işaretlemeyle derlenmeyen XAML) için kullanabilirsiniz. WPF için işaretlemeyle derlenmiş XAML ve XAML'nin BAML biçimi şu anda XAML 2009 anahtar sözcüklerini ve özelliklerini desteklememektedir. XAML derlemesini işaretlemeniz gerekiyorsa, XAML 2006 ve WPF Genel XAML Kullanımları bölümünde belirtilen kısıtlamalar altında çalışmanız gerekir. BAML yalnızca .NET Framework'te desteklenir.

Ayrıca bkz.