Özel türler ve kitaplıklar için XAML ile ilgili CLR öznitelikleri
Bu konuda, .NET XAML Hizmetleri tarafından tanımlanan ortak dil çalışma zamanı (CLR) öznitelikleri açıklanmaktadır. Ayrıca, uygulamalar için derlemeler veya türler için XAML ile ilgili bir senaryoya sahip .NET 'te tanımlanan diğer CLR özniteliklerini açıklar. Bu CLR özniteliklerine sahip Attributing derlemeleri, türleri veya üyeleri, türleriniz ile ilgili XAML türü sistem bilgilerini sağlar. Bilgiler XAML düğüm akışını doğrudan veya adanmış XAML okuyucular ve XAML yazarları aracılığıyla işlemek için .NET XAML Hizmetleri kullanan tüm XAML tüketicisine sağlanır.
Özel türler ve özel Üyeler için CLR özniteliklerini XAML-Related
CLR özniteliklerinin kullanılması, türlerinizi tanımlamak için genel CLR 'yi kullanmanızı gerektirir, aksi takdirde bu tür öznitelikler kullanılamaz. Tür yedeklemesini tanımlamak için CLR kullanırsanız, .NET XAML Hizmetleri XAML yazarları tarafından kullanılan varsayılan XAML şeması bağlamı, derlemeleri yedeklemeye karşı yansıma aracılığıyla CLR atışı okuyabilir.
Aşağıdaki bölümlerde, özel türlere veya özel üyelere uygulayabileceğiniz XAML ile ilgili öznitelikler açıklanır. Her CLR özniteliği bir XAML tür sistemiyle ilgili bilgileri iletişim kurar. Yükleme yolunda, öznitelikli bilgiler XAML okuyucunun geçerli bir XAML düğüm akışı biçimine yardımcı olur ya da XAML yazıcısının geçerli bir nesne grafiği üretmesine yardımcı olur. Kayıt yolunda, öznitelikli bilgiler XAML okuyucusuna reconstitutes XAML türü sistem bilgileri olan geçerli bir XAML düğüm akışı biçimine yardımcı olur. ya da XAML yazıcı veya diğer XAML tüketicileri için serileştirme ipuçları veya gereksinimler bildirir.
AmbientAttribute
Başvuru belgeleri:
Uygulama hedefi: Eklenebilir özellikleri destekleyen sınıf, özellik veya erişimci üyeleri.
Bağımsız değişkenler: Seçim
AmbientAttribute özelliğin veya öznitelikli türü alan tüm özelliklerin XAML 'deki çevresel Özellik kavramı altında yorumlanması gerektiğini gösterir. Çevresel kavram, XAML işlemcilerin üye tür sahiplerini nasıl belirlemeleriyle ilgilidir. Ambient özelliği, bir nesne grafiği oluştururken değerin ayrıştırıcı bağlamında kullanılabilir olması beklenen bir özelliktir, ancak normal tür-üye aramasının oluşturulan hemen XAML düğüm kümesi için askıya alındığı yer.
Çevresel kavram, CLR atışının nasıl tanımladığına ilişkin özellikler olarak temsil edilmeyen eklenebilir üyelere uygulanabilir AttributeTargets . Yöntem attributıon kullanımı, yalnızca get XAML için eklenebilir kullanımı destekleyen bir erişimci için uygulanmalıdır.
ConstructorArgumentAttribute
Başvuru belgeleri:
Uygulama hedefi: Sınıfı
Bağımsız değişkenler: Tek bir Oluşturucu bağımsız değişkeniyle eşleşen özelliğin adını belirten bir dize.
ConstructorArgumentAttribute bir nesnenin parametresiz bir Oluşturucu sözdizimi kullanılarak başlatıla, ve belirtilen adın bir özelliğinin ise oluşturma bilgilerini sağladığı belirtir. Bu bilgiler öncelikle XAML serileştirme içindir. Daha fazla bilgi için bkz. ConstructorArgumentAttribute.
ContentPropertyAttribute
Başvuru belgeleri:
Uygulama hedefi: Sınıfı
Bağımsız değişkenler: Öznitelikli türdeki bir üyenin adını belirten bir dize.
ContentPropertyAttribute bağımsız değişken tarafından adlandırılan özelliğin, bu tür için XAML içerik özelliği olarak işlev görmesi gerektiğini gösterir. XAML içerik özelliği tanımı, tanımlama türüne atanabilen tüm türetilmiş türlere devralınır. Belirli türetilmiş tür üzerine uygulayarak, belirli bir türetilmiş tür üzerinde tanımlamayı geçersiz kılabilirsiniz ContentPropertyAttribute .
XAML içerik özelliği olarak hizmet veren özelliği için, özelliği için özellik öğesi etiketleme XAML kullanımında atlanabilir. Genellikle, içerik ve kapsama modelleriniz için kolaylaştırılmış XAML işaretlemesini yükselterek XAML içerik özelliklerini belirlersiniz. Yalnızca bir üye XAML içerik özelliği olarak atanabileceğinden, bazen bir türün çeşitli kapsayıcı özelliklerinden hangisinin XAML içerik özelliği olarak belirlenmesi gerektiğine ilişkin tasarım seçimlerine sahip olursunuz. Diğer kapsayıcı özelliklerinin açık özellik öğeleriyle kullanılması gerekir.
XAML düğüm akışında XAML içerik özellikleri, StartMemberEndMember için özelliğinin adını kullanarak hala ve düğümleri üretir XamlMember . Bir üyenin XAML içerik özelliği olup olmadığını anlamak için, XamlType konumundan değeri inceleyin StartObject ve değerini alın ContentProperty .
ContentWrapperAttribute
Başvuru belgeleri:
Uygulama hedefi: Sınıf, özellikle koleksiyon türleri.
Bağımsız değişkenler: Yabancı içerik için içerik sarmalayıcı türü olarak kullanılacak türü belirten bir.
ContentWrapperAttribute yabancı içeriği kaydırmak için kullanılacak, ilişkili koleksiyon türünde bir veya daha fazla türü belirtir. Yabancı içerik özelliği, içerik özelliğinin türü sistem kısıtlamalarının, sahip olan türdeki XAML kullanımının desteklediği tüm olası içerik durumlarını yakalamamasıdır. Örneğin, belirli bir türün içeriği için XAML desteği, kesin tür belirtilmiş bir genel içindeki dizeleri destekleyebilir Collection<T> . İçerik sarmalayıcıları, önceden var olan biçimlendirme kurallarını XAML için, metin ile ilgili içerik modellerini geçirme gibi, koleksiyonlara yönelik atanabilir değerlerin daha da bu şekilde geçirilmesi için yararlıdır.
Birden fazla içerik sarmalayıcı türü belirtmek için, özniteliği birden çok kez uygulayın.
Bağımlıdsonattribute
Başvuru belgeleri:
Uygulama hedefi: Özelliði
Bağımsız değişkenler: Öznitelikli türdeki başka bir üyenin adını belirten bir dize.
DependsOnAttribute Öznitelikli özelliğin başka bir özelliğin değerine bağlı olduğunu gösterir. Bu özniteliği bir özellik tanımına uygulamak, bağımlı özelliklerin öncelikle XAML nesne yazma içinde işlenmesini sağlar. DependsOnAttributeBelirli bir ayrıştırma sırasının geçerli nesne oluşturmak için izlenmesi gereken türlerin özelliklerinin olağanüstü durumlarını belirtme kullanımları.
DependsOnAttributeBir özellik tanımına birden çok durum uygulayabilirsiniz.
MarkupExtensionReturnTypeAttribute
Başvuru belgeleri:
Uygulama hedefi: Türetilmiş bir tür olması beklenen sınıf .
Bağımsız değişkenler: Bu, öznitelik sonucu olarak beklenen kesin türü belirten bir ProvideValueMarkupExtension .
Daha fazla bilgi için bkz. xaml Için biçimlendirme uzantıları genel bakış.
NameScopePropertyAttribute
Başvuru belgeleri:
Uygulama hedefi: Sınıfı
Bağımsız değişkenler: İki tür atısyonu destekler:
Öznitelikli türdeki bir özelliğin adını belirten bir dize.
Bir özelliğin adını belirten bir dize ve Type adlandırılmış özelliği tanımlayan tür için. Bu form, XAML namescope özelliği olarak eklenebilir bir üye belirtmek içindir.
NameScopePropertyAttribute Öznitelikli sınıf için XAML namescope değerini sağlayan bir özelliği belirtir. XAML namescope özelliğinin INameScope , gerçek xaml namescope, mağazasının ve davranışını uygulayan ve tutan bir nesneye başvurması beklenir.
RuntimeNamePropertyAttribute
Başvuru belgeleri:
Uygulama hedefi: Sınıfı
Bağımsız değişkenler: Öznitelikli türdeki çalışma zamanı adı özelliğinin adını belirten bir dize.
RuntimeNamePropertyAttribute XAML RuntimeNamePropertyAttributeeşleşen öznitelikli türün bir özelliğini raporlar. Özellik türünde olmalı String ve okuma/yazma olmalıdır.
Tanım, tanımlama türüne atanabilen tüm türetilmiş türlere devralınır. Belirli türetilmiş tür üzerine uygulayarak, belirli bir türetilmiş tür üzerinde tanımlamayı geçersiz kılabilirsiniz RuntimeNamePropertyAttribute .
TrimSurroundingWhitespaceAttribute
Başvuru belgeleri:
Uygulama hedefi: Türü
Bağımsız değişkenler: Seçim.
TrimSurroundingWhitespaceAttribute , boşluk açısından önemli içerik (sahip olan bir koleksiyon tarafından tutulan içerik) içinde alt öğe olarak görünebilen belirli türlere uygulanır WhitespaceSignificantCollectionAttribute . TrimSurroundingWhitespaceAttribute genellikle kaydetme yoluyla ilgilidir, ancak inceleyerek yükleme yolundaki XAML tür sisteminde kullanılabilir XamlType.TrimSurroundingWhitespace . Daha fazla bilgi için bkz. xaml 'de beyaz boşluk işleme.
TypeConverterAttribute
Başvuru belgeleri:
Uygulama hedefi: Class, Property, Method (tek XAML-geçerli yöntem durumu eklenebilir bir üyeyi destekleyen bir erişimdir).
Bağımsız değişkenler: Öğesinin TypeConverter .
TypeConverterAttribute XAML bağlamında özel bir başvurusu vardır TypeConverter . Bu TypeConverter , özel türler veya bu türdeki Üyeler için tür dönüştürme davranışı sağlar.
Türüne TypeConverterAttribute , tür dönüştürücü uygulamanıza başvurarak özniteliğini uygulayın. Sınıflarda, yapılarda veya arabirimlerde XAML için tür dönüştürücüleri tanımlayabilirsiniz. Numaralandırmalar için tür dönüştürmesi sağlamanız gerekmez, bu dönüştürme yerel olarak etkinleştirilir.
Tür dönüştürüceniz, biçimlendirme içindeki öznitelikler veya başlatma metni için kullanılan bir dizeden amaçlanan hedef türüne dönüştürebilmelidir. Daha fazla bilgi için bkz. TypeConverters ve xaml.
Bir türün tüm değerlerine uygulamak yerine, XAML için bir tür dönüştürücü davranışı belirli bir özellik üzerinde de oluşturulabilir. Bu durumda, özellik TypeConverterAttribute tanımına (belirli ve tanımlara değil dış tanım) getset uygulanır.
Özel bir iliştirilebilir üyenin XAML kullanımı için tür dönüştürücü davranışı, XAML kullanımını destekleyen yöntem erişimcisine TypeConverterAttributeget uygulanarak atanabilir.
ile benzer TypeConverter şekilde, XAML'nin varlığından önce .NET'te vardı TypeConverterAttribute ve tür dönüştürücü modeli başka amaçlara hizmet etti. 'a başvurup kullanmak TypeConverterAttribute için, bunu tam olarak nitelendirin veya için bir using deyimini sağlayın. System.ComponentModel Ayrıca Projenize Sistem derlemesini de dahil etmek.
Uidpropertyattribute
Başvuru Belgeleri:
Aşağıdakiler için geçerlidir: Sınıfı
Bağımsız değişken: İlgili özellik adına göre başvurulan bir dize.
x:UidYönergesi'ne diğer adı olan bir sınıfın CLR özelliğini gösterir.
Usableduringınitializationattribute
Başvuru Belgeleri:
Aşağıdakiler için geçerlidir: Sınıfı
Bağımsız değişken: Boole. Özniteliğin amaçlanan amacı için kullanılırsa, değeri olarak ayar true kullanılmalıdır.
Türün XAML nesne grafı oluşturma sırasında üstten aşağıya oluşturulıp oluşturula olmadığını gösterir. Bu, büyük olasılıkla programlama modelinizin tanımıyla yakından ilgili olan gelişmiş bir kavramdır. Daha fazla bilgi için bkz. UsableDuringInitializationAttribute.
Valueserializerattribute
Başvuru Belgeleri:
Aşağıdakiler için geçerlidir: Sınıf, özellik, yöntem (tek XAML geçerli yöntem durumu, iliştirilebilir bir üyeyi destekleyen bir erişimcidir).
Bağımsız değişken: Öznitelikli türün tüm özelliklerini veya belirli öznitelikli özelliği seri hale getirerek kullanmak için değer seri hale getirici destek sınıfını belirten bir.
ValueSerializer , bir'den daha fazla durum ve bağlam gerektiren bir değer serileştirme sınıfı TypeConverter belirtir. ValueSerializer , iliştirilebilir üye için statik erişimci ValueSerializerAttribute yöntemine özniteliği get uygulanarak iliştirilebilir bir üye ile ilişkilendirilebilir. Değer serileştirmesi, numaralamalar, arabirimler ve yapılar için de geçerlidir, ancak temsilciler için geçerli değildir.
Whitespacesignificantcollectionattribute
Başvuru Belgeleri:
Aşağıdakiler için geçerlidir: Sınıf, özellikle nesne öğelerinin çevresindeki boşluk kullanıcı arabirimi gösterimi için önemli olabileceği karma içeriği barındırması beklenen koleksiyon türleri.
Bağımsız değişken: Hiçbiri.
WhitespaceSignificantCollectionAttribute , bir koleksiyon türünün XAML işlemcisi tarafından önemli bir boşluk olarak işlenmesi gerektiğini belirtir ve bu da XAML düğüm akışının koleksiyon içindeki değer düğümlerinin inşa sini etkiler. Daha fazla bilgi için bkz. XAML'de boşluk işleme.
Xamldeferloadattribute
Başvuru Belgeleri:
Aşağıdakiler için geçerlidir: Sınıf, özellik.
Bağımsız değişken: Dize olarak iki asif formu türü veya olarak türleri destekler. Bkz. XamlDeferLoadAttribute.
Bir sınıf veya özelliğin XAML için ertelenen yük kullanımı olduğunu (şablon davranışı gibi) gösterir ve erteleme davranışını ve hedef/içerik türünü sağlayan sınıfı raporlar.
Xamlsetmarkupextensionattribute
Başvuru Belgeleri:
Aşağıdakiler için geçerlidir: Sınıfı
Bağımsız değişken: Geri çağırmayı olarak adlar.
Bir sınıfın bir veya daha fazla özelliği için değer sağlamak üzere işaretleme uzantısını kullanabileceğini gösterir ve sınıfın herhangi bir özelliği üzerinde işaretleme uzantısı kümesi işlemi gerçekleştirmeden önce XAML yazıcının çağırsı gereken bir işleyiciye başvurur.
Xamlsettypeconverterattribute
Başvuru Belgeleri:
Aşağıdakiler için geçerlidir: Sınıfı
Bağımsız değişken: Geri çağırmayı olarak adlar.
Bir sınıfın bir veya daha fazla özelliği için değer sağlamak üzere bir tür dönüştürücü kullanabileceğini gösterir ve sınıfın herhangi bir özelliği üzerinde tür dönüştürücü ayarlama işlemi gerçekleştirmeden önce bir XAML yazıcının çağırsı gereken bir işleyiciye başvurur.
Xmllangpropertyattribute
Başvuru Belgeleri:
Aşağıdakiler için geçerlidir: Sınıfı
Bağımsız değişken: Öznitelikli tür üzerinde diğer ad için özelliğin adını belirten bir dize.
XmlLangPropertyAttribute , XML yönergesine eşlene öznitelikli türün bir özelliğini lang raporlar. Özelliğin türünde olması şart değildir, ancak bir dizeden atanabilir olması gerekir (atama, bir tür dönüştürücünün özelliğin türüyle veya belirli bir özellikle iliştirerek String gerçekleştirilebilir). Özelliğin okuma/yazma olması gerekir.
Eşleme senaryosu, bir çalışma zamanı nesne modelinin XMLDOM ile özel olarak işlemeden XML tarafından belirtilen dil xml:lang bilgilerine erişmesini sağlar.
Tanım, tanımlama türüne atanabilir tüm türetilmiş türlere devralınıyor. Nadir bir senaryo olsa da, belirli bir türetilmiş türe uygulayarak tanımı belirli bir türetilmiş XmlLangPropertyAttribute tür üzerinde geçersiz kılarak.
XAML-Related Düzeyinde CLR Özniteliklerini Derleme
Aşağıdaki bölümlerde, türlere veya üye tanımlara uygulanmaz, ancak bunun yerine derlemelere uygulanan XAML ile ilgili öznitelikler açıklanmaktadır. Bu öznitelikler, XAML'de kullanmak üzere özel türler içeren bir kitaplık tanımlamanın genel hedefiyle ilgilidir. Bazı öznitelikler XAML düğüm akışını doğrudan etkilemek zorunda değildir, ancak diğer tüketicilerin kullanmaları için düğüm akışında geçirilmektedir. Bilgi tüketicileri, XAML ad alanı bilgilerine ve ilişkili ön ek bilgilerine ihtiyaç olan tasarım ortamlarını veya serileştirme işlemlerini içerir. XAML şema bağlamı (.NET XAML Hizmetleri varsayılan dahil) bu bilgileri de kullanır.
Xmlnscompatiblewithattribute
Başvuru Belgeleri:
Bağımsız değişken:
Alt dize olarak XAML ad alanının tanımlayıcısını belirten bir dize.
Önceki bağımsız değişkenden XAML ad alanını alt alta alanın XAML ad alanının tanımlayıcısını belirten bir dize.
XmlnsCompatibleWithAttribute , bir XAML ad alanının başka bir XAML ad alanı tarafından alt olarak kabul edile olduğunu belirtir. Genellikle, alt XAML ad alanı önceden tanımlanmış bir içinde XmlnsDefinitionAttribute belirtilmiştir. Bu teknik, bir kitaplıkta XAML sözlüğü sürümü oluşturma ve bunu önceki sürüme göre tanımlanmış işaretleme ile uyumlu hale etmek için kullanılabilir.
Xmlnsdefinitionattribute
Başvuru Belgeleri:
Bağımsız değişken:
Tanımladığınız XAML ad alanının tanımlayıcısını belirten bir dize.
CLR ad alanını ad alan bir dize. CLR ad alanı derlemeniz içinde ortak türleri tanımlamalı ve CLR ad alanı türlerinden en az biri XAML kullanımına yöneliktir.
XmlnsDefinitionAttribute , daha sonra bir XAML nesne yazıcısı veya XAML şema bağlamı tarafından tür çözümlemesi için kullanılan bir XAML ad alanı ile CLR ad alanı arasında derleme başına bir eşleme belirtir.
Bir XmlnsDefinitionAttribute derlemeye birden fazla uygulanabilir. Bu, aşağıdaki nedenlerin herhangi bir birleşimi için yapılabilir:
Kitaplık tasarımı, çalışma zamanı API erişiminin mantıksal organizasyonu için birden çok CLR ad alanı içerir; ancak, aynı XAML ad alanına başvurarak bu ad alanlarındaki tüm türlerin XAML ile kullanılabilir olması gerekir. Bu durumda, aynı değeri ancak XmlnsDefinitionAttribute farklı değerleri kullanarak birkaç öznitelik XmlNamespaceClrNamespace uygulayabilirsiniz. Bu, çerçevenizin veya uygulamanın ortak kullanımda varsayılan XAML ad alanı olarak hedeflemektedir XAML ad alanı için eşlemeler tanımıyorsanız özellikle yararlıdır.
Kitaplık tasarımı birden çok CLR ad alanı içerir ve bu CLR ad alanlarındaki türlerin kullanımları arasında bilinçli bir XAML ad alanı ayrımı yapmak istiyor.
Derlemede bir CLR ad alanı tanımlarsınız ve birden fazla XAML ad alanı aracılığıyla erişilebilir olmasını istersiniz. Bu senaryo, aynı kod tabanına sahip birden çok sözlük desteğine sahipken oluşur.
XAML dil desteğini bir veya daha fazla CLR ad alanına tanımlarsınız. Bu durumda, XmlNamespace değeri olması
http://schemas.microsoft.com/winfx/2006/xamlgerekir.
Xmlnsprefixattribute
Başvuru Belgeleri:
Bağımsız değişken:
XAML ad alanının tanımlayıcısını belirten bir dize.
Önerilen ön eki belirten bir dize.
XmlnsDefinitionAttribute XAML ad alanı için kullanılması önerilen ön eki belirtir. Ön ek, .NET XAML Hizmetleri tarafından seri hale getirilecek bir XAML dosyasına öğe ve öznitelik yazarken veya XAML uygulayan bir kitaplık XAML düzenleme özelliklerine sahip bir tasarım ortamıyla etkileşim kurduğunda XamlXmlWriter yararlıdır.
Bir XmlnsPrefixAttribute derlemeye birden fazla uygulanabilir. Bu, aşağıdaki nedenlerin herhangi bir birleşimi için yapılabilir:
Derlemeniz birden fazla XAML ad alanı için türleri tanımlar. Bu durumda, her XAML ad alanı için farklı ön ek değerleri tanımlayın.
Birden çok sözlük destekliyor ve her sözlük ve XAML ad alanı için farklı ön ekler kullanırsınız.
Derlemede XAML dil desteğini tanımlar ve için bir 'ye XmlnsDefinitionAttribute
http://schemas.microsoft.com/winfx/2006/xamlsahipsiniz. Bu durumda, genellikle ön ekixyükseltin.
Not
.NET XAML Hizmetleri, XAML ile ilgili özniteliğini de RootNamespaceAttribute tanımlar. Bu öznitelik, proje sistemi desteği için derleme düzeyinde bir özniteliktir ve XAML özel türleri için uygun değildir.