XAML için koleksiyonlar ve koleksiyon türleri
Bu makalede, bir koleksiyonu desteklemeye yönelik türlerin özelliklerini tanımlama ve bir üst nesne öğesinin veya özellik öğesinin öğe alt öğeleri olarak koleksiyon öğelerinin örneğini oluşturma için XAML söz dizimini destekleme açıklanmıştır.
XAML Koleksiyonu Kavramları
Kavramsal olarak, XAML'de bir XAML nesne öğesi veya XAML özellik öğesi kapsamında birden çok alt öğenin bulunduğu tüm ilişkiler bir koleksiyon olarak uygulanarak uygulanmaktadır. Bu koleksiyon, bu ilişkide üst öğe olan XAML türünün belirli bir XAML özelliğiyle ilişkili olması gerekir. XAML işlemcisi işaretlemede her öğeyi, arka koleksiyon özelliğinin yeni eklenen bir öğesi olarak atamayı beklediğinizden, özelliğin bir koleksiyon olması gerekir.
XAML dil düzeyinde, koleksiyon desteğinin tam gereksinimleri tam olarak tanımlanmamıştır. Bir koleksiyonun bir liste veya sözlük (her ikisi de değil) olduğu kavramı XAML dil düzeyinde tanımlanır, ancak hangi backing türleri listeleri veya sözlükleri temsil ediyor XAML dili tarafından tanımlanmaz.
.NET XAML Hizmetlerinde XAML koleksiyon desteği kavramı. .NET destek türleri açısından daha net bir şekilde tanımlanmıştır. Koleksiyonlar için XAML desteği, genel .NET programlamada listeler ve sözlükler için kullanılan çeşitli .NET kavramlarını ve API'leri temel almaktadır.
Arabirim, IList bir liste koleksiyonunu gösterir.
arabirimi IDictionary bir sözlük koleksiyonunu gösterir.
Array bir diziyi temsil eder ve bir dizi IList yöntemleri destekler.
Bu koleksiyon kavramlarının her biri için bir .NET XAML Services XAML işlemcisi, koleksiyon özelliğinin türünün belirli bir örneğinde yöntemini Add çağırmayı bekler. Veya bir serileştirme senaryosunda XAML işlemcisi, her koleksiyonun "Öğeler" kavramına göre listede, sözlükte veya dizide bulunan her öğe için ayrıK XAML türü örnekler üretir. Bu öğeler: IList.Item[] ; ; için IDictionary.Item[]Array.IList.Item[]Array açık.
Genel Koleksiyonlar
Genel koleksiyonlar genel .NET programlaması için yararlı olabilir ve XAML koleksiyon özellikleri için de kullanılabilir. Ancak, ve genel arabirimleri IList<T> . NET XAML Hizmetleri XAML işlemcileri tarafından genel olmayan veya ile eşdeğer IDictionary<TKey,TValue> olarak IListIDictionary tanımlanmaz. Arabirimleri uygulamak yerine, genel koleksiyon özellik türleri için önerilen bir yaklaşım veya sınıflarından List<T>Dictionary<TKey,TValue> türetmektir. Bu sınıflar genel olmayan arabirimleri uygulayan ve bu nedenle temel uygulamada XAML koleksiyonları için beklenen desteği içerir.
Read-Only Koleksiyonları ve Başlatma Mantığı
.NET programlamada, bir koleksiyonun değerini tutan herhangi bir özelliği salt okunur koleksiyon olarak yapmak yaygın bir tasarım desenidir. Bu düzen, koleksiyon özelliğine sahip olan örneğin koleksiyona ne olacağını daha iyi denetlemesi için izin sağlar. Özellikle, desen özelliğini ayarerek önceden var olan koleksiyonun tamamının yanlışlıkla değiştirilmesini önler. Bu düzende, koleksiyon türü ve/veya gibi ilgili koleksiyon arabirimleri tarafından desteklenen metotlar veya özellikler çağrılarak bunun yerine, çağıranlara göre koleksiyona herhangi bir erişim IList yapılacaktır.
Bu düzenin kullanımı, salt okunur bir koleksiyon özelliğini ortaya çıkaran herhangi bir sınıfın önce boş bir koleksiyonu tutmak için bu özelliği başlatması gerektiğini ifade eder. Başlatma genellikle sınıfının yapı davranışının bir parçası olarak gerçekleştirilir. XAML için yararlı olması için, bu tür bir mantığa her zaman parametresiz oluşturucu tarafından başvurulmalıdır, çünkü XAML genellikle özellikleri işlemeden önce parametresiz oluşturucu çağırır (koleksiyon özellikleri veya başka bir şekilde).
XAML Tür Sistemi Desteği ve Koleksiyonları
XAML ayrıştırma ve koleksiyon özelliklerini doldurmak veya seri hale getirmenin temel mekaniğinin ötesinde, .NET XAML Hizmetleri'ne uygulanan XAML türü sistemi, XAML'de koleksiyonlarla ilgili çeşitli tasarım özellikleri içerir.
IsCollection XAML türü, XAML koleksiyonu desteği sağlayan bir tür tarafından destek alıyorsa true döndürür.
IsDictionary ve IsArray , XAML türünün desteklediği koleksiyon modunu daha da tanımlayabilir. .NET XAML Hizmetlerini ve XAML tür sistemini temel alan ancak mevcut uygulamaları temel alamadan özel XAML işlemcileri için, koleksiyon işleme için hangi yöntemin çağrıl olacağını bilmek için hangi koleksiyon modunun kullanlı olduğunu bilmek XamlWriter gerekebilir.
Önceki özellik değerlerinin her biri, bir XAML türü üzerindeki LookupCollectionKind geçersiz kılmalardan etki potansiyel olarak etkilemektedir.