XAML İçin Tür Dönüştürücüleri ve İşaretleme Uzantıları
Tür dönüştürücüleri ve işaretleme uzantıları, XAML tür sistemlerinin ve XAML yazıcıların nesne grafı bileşenleri oluşturmak için kullanabileceği iki tekniktir. Bazı özelliklere sahip olsalar da, tür dönüştürücüler ve işaretleme uzantıları bir XAML düğümü akışında farklı şekilde temsil edildi. Bu belge kümesinde tür dönüştürücüleri, işaretleme uzantıları ve benzer yapılar bazen topluca değer dönüştürücüleri olarak adlandırılır.
Değer Dönüştürücüleri
XAML'de değer dönüştürücüler çeşitli senaryolar için kullanılır. Aşağıdaki listede XAML'de farklı türlerde değer dönüştürücüler görüntülenir:
Tür dönüştürücü
İşaretleme uzantısı
Değer seri hale getirici
XAML metin söz dizimi için mantık sağlayan ilgili sınıf veya destek sınıfı
Tür Dönüştürücüleri
.NET XAML Hizmetleri tanımında tür dönüştürücüler CLR sınıfından türeten TypeConverter sınıflardır. TypeConverter , XAML var olmadan önce .NET'te olan bir sınıftır. İlk amacı, özellik pencerelerini ve IDE özellikleri için benzer metin tabanlı düzenleme benzetimlerini desteklemektir. XAML'nin .NET'e giriş özelliği, metin söz dizimini (öznitelik değerinde veya XAML değer düğümünde bulunan şekilde) bir TypeConverter nesneye dönüştürmek için kullanır. TypeConverter bir nesne değerini metin söz dizimi olarak serileştirmek için de kullanılabilir. TypeConverter, communication foundation (WCF) ve Windows Presentation Foundation 'de önceki çerçeveye özgü XAML Windows da kullanılmıştır. TypeConverterXAML'de hakkında daha fazla bilgi için bkz. TypeConverter
İşaretleme Uzantıları
.NET XAML Hizmetleri uygulamasında işaretleme uzantıları, sınıfından türeten MarkupExtension sınıflardır. İşaretleme uzantıları, bu formda XAML dili tarafından ortaya çıkan bir kavramdır. Biçimlendirme uzantısını, mantığını sağlamak için bir hizmet sınıfına çağıran genişletilebilir bir kaçış dizisi gibi düşünebilirsiniz. İşaretleme açısından, XAML işlemcileri bir biçimlendirme uzantısını bir metin dizesinde açma ayracı ({) ile başlayan bir metin dizisiyle evrensel olarak tanır.
Biçimlendirme uzantıları tür dönüştürücülerinden farklıdır. Tür dönüştürücüleri genellikle türler veya üyelerle ilişkilendirilr. Nesne grafı oluşturma veya serileştirme söz dizimi bu varlıklarla ilişkili metin söz dizimi ile karşılaştığında çağrılır.
İşaretleme uzantıları tek bir destekleyen hizmet sınıfıyla ilişkilendirilmektedir, ancak herhangi bir üye değeri için uygulanabilir. (Ancak, hizmet bağlamını kullanarak işaretleme uzantınızı belirli üyeler veya hedef türler ile kullanımını kasıtlı olarak kısıtlamak için kullanabilirsiniz.) İşaretleme uzantıları, tür dönüştürücü ilişkilendirmeyi geçersiz k olabilir. Veya bunları, aksi takdirde metin söz dizimlerini desteklemeyen üyeler için bir öznitelik değeri belirtmek için kullanabilirsiniz.
XAML için işaretleme uzantısı uygulama deseni hakkında daha fazla bilgi için bkz. XAML için İşaretleme Uzantılarına Genel Bakış.
Değer Seri hale getiricileri
, ValueSerializer bir nesneyi dizeye dönüştürmek için iyileştirilmiş özel bir tür dönüştürücüsü. ValueSerializerXAML için bir yöntemi ConvertFrom hiç uygulamay olabilir. Uygulama, ValueSerializer hizmetleri uygulama gibi bir şekilde elde TypeConverter eder. Sanal yöntemler bir giriş parametresi context sağlar. parametresi, context arabiriminden IValueSerializerContext devralan ve bir yöntemi IServiceProvider olan GetService türündedir.
Serileştirme için XAML düğüm döngüsü işleme kullanan XAML türü sisteminde ve XAML yazıcı uygulamaları için, bir tür veya üye ile ilişkili bir değer dönüştürücü kendi özelliği tarafından XamlType.ValueSerializer raporlandı. Serileştirme işlemi gerçekleştiren XAML yazıcıları için anlamı, bir ve varsa, yük yolu için tür dönüştürücünün ve değer seri hale getiricinin kaydetme yolu için XamlType.TypeConverterXamlType.ValueSerializer kullanılmalıdır. varsa XamlType.TypeConverter ancak XamlType.ValueSerializernull ise, kaydetme yolu için tür dönüştürücüsü de kullanılır.
Diğer Değer Dönüştürücüleri
Değer dönüştürücü, bir tür dönüştürücünün veya işaretleme uzantısının belirli desenlerinin ötesinde genişletilebilir. Ancak bu özelleştirme, .NET XAML Hizmetleri tarafından sağlanan XAML tür sisteminin yeniden tanımlarını da gerektirir. Mevcut XAML tür sistemi, tür dönüştürücüler, işaretleme uzantıları ve değer seri hale getiricileri için gösterimlere ve raporlama sistemlerine sahiptir, ancak özel değer dönüştürme biçimlerine sahip değildir. Özel değer dönüştürücüleri oluşturmak için türünü XamlValueConverter<TConverterBase> kullanın.
Tür Dönüştürücüleri ve İşaretleme Uzantılarını Birlikte
İşaretleme uzantıları ve tür dönüştürücüler XAML'deki farklı durumlar için kullanılır. Biçimlendirme uzantısı kullanımları için bağlam kullanılabilir olsa da, işaretleme uzantısının değer sağladığı özelliklerin tür dönüştürme davranışı genellikle işaretleme uzantısı uygulamalarına denetlenir. Başka bir deyişle, bir işaretleme uzantısı çıkış olarak bir metin dizesi döndürse bile, belirli bir özellik veya özellik değeri türüne uygulandığı gibi bu dizede tür ProvideValue dönüştürme davranışı çağrılmaz. Genellikle, işaretleme uzantısının amacı bir dizeyi işlemek ve herhangi bir tür dönüştürücü olmadan bir nesne dönmektir.
Değer Dönüştürücü için Hizmet Bağlamı
Bir değer dönüştürücüsü uygulamak için genellikle değer dönüştürücünün uygulandığı bir bağlama erişmeye ihtiyacınız olur. Bu bağlam hizmet bağlamı olarak bilinir. Hizmet bağlamı, etkin XAML şema bağlamı, XAML şema bağlamı ve XAML nesne yazıcısı tarafından kullanılan tür eşleme sistemine erişim gibi bilgileri içerebilir. Değer dönüştürücü için kullanılabilen hizmet bağlamları ve hizmet bağlamının sağlay olabileceği hizmetlere erişme hakkında daha fazla bilgi için bkz. Tür Dönüştürücüleri ve İşaretleme Uzantıları için Kullanılabilir Hizmet Bağlamları.