Özel türler ve kitaplıklar için XAML ile ilgili CLR öznitelikleri

Bu konu, .NET XAML Hizmetleri tarafından tanımlanan ortak dil çalışma zamanı (CLR) özniteliklerini açıklar. Ayrıca, .NET'te tanımlanan ve uygulamadan derlemelere veya türlere yönelik XAML ile ilgili senaryoya sahip olan diğer CLR özniteliklerini de açıklar. Derlemeleri, türleri veya üyeleri bu CLR öznitelikleriyle dağıtmak, türlerinizle ilgili XAML türü sistem bilgileri sağlar. XAML düğüm akışını doğrudan veya ayrılmış XAML okuyucuları ve XAML yazıcıları aracılığıyla işlemek için .NET XAML Hizmetleri kullanan herhangi bir XAML tüketicisine bilgi sağlanır.

CLR özniteliklerini kullanmak, türlerinizi tanımlamak için genel CLR'yi kullandığınızı gerektirir, aksi takdirde bu öznitelikler kullanılamaz. Tür yedeklemesini tanımlamak için CLR kullanırsanız, .NET XAML Hizmetleri XAML yazıcıları tarafından kullanılan varsayılan XAML şeması bağlamı, derlemeleri yedeklemeye karşı yansıma aracılığıyla CLR ilişkilendirmesini okuyabilir.

Aşağıdaki bölümlerde, özel türlere veya özel üyelere uygulayabileceğiniz XAML ile ilgili öznitelikler açıklanmaktadır. Her CLR özniteliği, bir XAML türü sistemiyle ilgili bilgileri iletir. Yük yolunda, öznitelikli bilgiler XAML okuyucusunun geçerli bir XAML düğümü akışı oluşturmasını veya XAML yazıcısının geçerli bir nesne grafı oluşturmasını sağlar. Kaydetme yolunda, öznitelikli bilgiler XAML okuyucusunun XAML türü sistem bilgilerini yeniden oluşturan geçerli bir XAML düğüm akışı oluşturmalarına yardımcı olur; veya XAML yazıcısı veya diğer XAML tüketicileri için serileştirme ipuçlarını veya gereksinimlerini bildirir.

Ambientattribute

Başvuru Belgeleri:AmbientAttribute

Şunlar için geçerlidir: Eklenebilir özellikleri destekleyen sınıf, özellik veya get erişimci üyeleri.

Bağımsız Değişkenler: Yok

AmbientAttribute özelliğin veya öznitelikli türü alan tüm özelliklerin XAML'deki ortam özelliği kavramı altında yorumlanması gerektiğini belirtir. Ortam kavramı, XAML işlemcilerinin üyelerin tür sahiplerini nasıl belirlediğini gösterir. Ortam özelliği, nesne grafı oluştururken değerin ayrıştırıcı bağlamında kullanılabilir olması beklenen ancak oluşturulan hemen XAML düğüm kümesi için tipik tür üyesi aramasının askıya alındığı bir özelliktir.

Ortam kavramı, CLR atfının tanımladığı AttributeTargetsşekilde özellikler olarak temsil edilmeyen eklenebilir üyelere uygulanabilir. Yöntem ilişkilendirme kullanımı yalnızca XAML için eklenebilir kullanımı destekleyen bir get erişimci için uygulanmalıdır.

Constructorargumentattribute

Başvuru Belgeleri:ConstructorArgumentAttribute

Şunlar için geçerlidir: 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 dize.

ConstructorArgumentAttribute bir nesnenin parametresiz oluşturucu söz dizimi kullanılarak başlatılabildiğini ve belirtilen adın bir özelliğinin yapı bilgilerini sağladığını belirtir. Bu bilgiler öncelikli olarak XAML serileştirme içindir. Daha fazla bilgi için bkz. ConstructorArgumentAttribute.

Contentpropertyattribute

Başvuru Belgeleri:ContentPropertyAttribute

Şunlar için geçerlidir: Sınıf

Bağımsız değişkenler: Öznitelik türündeki bir üyenin adını belirten dize.

ContentPropertyAttribute bağımsız değişkeni tarafından adlandırılmış olarak özelliğinin bu tür için XAML içerik özelliği olarak görev yapması gerektiğini belirtir. XAML içerik özelliği tanımı, tanımlama türüne atanabilen tüm türetilmiş türleri devralır. Belirli türetilmiş türe uygulayarak ContentPropertyAttribute tanımı belirli bir türetilmiş türde geçersiz kılabilirsiniz.

XAML içerik özelliği olarak hizmet veren özellik için, özellik için özellik öğesi etiketlemesi XAML kullanımında atlanabilir. Genellikle, içeriğiniz ve kapsama modelleriniz için kolaylaştırılmış bir XAML işaretlemesini yükselten XAML içerik özelliklerini belirlersiniz. XAML içerik özelliği olarak yalnızca bir üye belirlenebildiğinden, bazen bir türün çeşitli kapsayıcı özelliklerinden hangisinin XAML içerik özelliği olarak atanması gerektiğine ilişkin tasarım seçimleri yapabilirsiniz. Diğer kapsayıcı özellikleri açık özellik öğeleriyle kullanılmalıdır.

XAML düğüm akışında, XAML içerik özellikleri için özelliğinin adını kullanarak ve düğümleri üretmeye StartMemberEndMember devam eder XamlMember. Bir üyenin XAML içerik özelliği olup olmadığını belirlemek için konumundan XamlType değerini StartObject inceleyin ve değerini ContentPropertyalın.

Contentwrapperattribute

Başvuru Belgeleri:ContentWrapperAttribute

Şunlar için geçerlidir: Sınıf, özellikle koleksiyon türleri.

Bağımsız değişkenler:Type Yabancı içerik için içerik sarmalayıcı türü olarak kullanılacak türü belirten A.

ContentWrapperAttribute , ilişkili koleksiyon türünde yabancı içeriği sarmalamada kullanılacak bir veya daha fazla türü belirtir. Yabancı içerik, içerik özelliğinin türündeki tür sistemi kısıtlamalarının, sahip olan tür için XAML kullanımının destekleyeceği olası içerik olaylarının tümünü yakalamadığı durumları ifade eder. Örneğin, belirli bir türdeki içerik için XAML desteği, kesin olarak belirlenmiş bir genel Collection<T>içindeki dizeleri destekleyebileceğinden. İçerik sarmalayıcıları, metinle ilgili con çadır modu ls'yi geçirme gibi koleksiyonlar için önceden var olan işaretleme kurallarını XAML'nin atanabilir değerler kavramına geçirmek için kullanışlıdır.

Birden fazla içerik sarmalayıcı türü belirtmek için özniteliğini birden çok kez uygulayın.

DependsOnAttribute

Başvuru Belgeleri:DependsOnAttribute

Şunlar için geçerlidir: Özellik

Bağımsız değişkenler: Öznitelik türündeki başka bir üyenin adını belirten dize.

DependsOnAttribute öznitelikli özelliğin başka bir özelliğin değerine bağlı olduğunu gösterir. Bu özniteliğin bir özellik tanımına uygulanması, bağımlı özelliklerin ilk olarak XAML nesne yazma işleminde işlenmesini sağlar. kullanımları DependsOnAttribute , geçerli nesne oluşturma için belirli bir ayrıştırma sırasının izlenmesi gereken türlerdeki olağanüstü özellik durumlarını belirtir.

Bir özellik tanımına birden çok DependsOnAttribute servis talebi uygulayabilirsiniz.

Markupextensionreturntypeattribute

Başvuru Belgeleri:MarkupExtensionReturnTypeAttribute

Şunlar için geçerlidir: Türetilmiş bir MarkupExtension tür olması beklenen sınıf.

Bağımsız değişkenler:Type özniteliğinin MarkupExtensionsonucu olarak ProvideValue bekleyebileceğiniz en kesin türü belirten A.

Daha fazla bilgi için bkz . XAML için biçimlendirme uzantılarına genel bakış.

Namescopepropertyattribute

Başvuru Belgeleri:NameScopePropertyAttribute

Şunlar için geçerlidir: Sınıf

Bağımsız değişkenler: İki tür ilişkilendirmeyi destekler:

  • Öznitelikli türdeki bir özelliğin adını belirten dize.

  • Bir özelliğin adını belirten bir dize ve adlandırılmış özelliği tanımlayan tür için bir Type . Bu form, XAML ad kapsamı özelliği olarak eklenebilir bir üye belirtmek içindir.

NameScopePropertyAttribute öznitelikli sınıf için XAML ad kapsamı değerini sağlayan bir özellik belirtir. XAML ad kapsamı özelliğinin gerçek XAML ad kapsamını, deposunu ve davranışını uygulayan INameScope ve tutan bir nesneye başvurması beklenir.

Runtimenamepropertyattribute

Başvuru Belgeleri:RuntimeNamePropertyAttribute

Şunlar için geçerlidir: 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 x:Name Yönergesi ile eşlenen öznitelikli türün bir özelliğini raporlar. Özelliğin türünde String olması ve okunması/yazılması gerekir.

Tanım, tanımlama türüne atanabilen tüm türetilmiş türleri devralır. Belirli türetilmiş türe uygulayarak RuntimeNamePropertyAttribute tanımı belirli bir türetilmiş türde geçersiz kılabilirsiniz.

Trimsurroundingwhitespaceattribute

Başvuru Belgeleri:TrimSurroundingWhitespaceAttribute

Şunlar için geçerlidir: Türler

Bağımsız Değişkenler: Yok.

TrimSurroundingWhitespaceAttribute , boşlukta önemli bir içerik (içeren bir koleksiyon WhitespaceSignificantCollectionAttributetarafından tutulan içerik) içinde alt öğeler olarak görünebilecek belirli türlere uygulanır. TrimSurroundingWhitespaceAttribute çoğunlukla kaydetme yoluyla ilgilidir, ancak XAML türü sisteminde yük yolunda incelenerek XamlType.TrimSurroundingWhitespacekullanılabilir. Daha fazla bilgi için bkz . XAML'de boşluk işleme.

Typeconverterattribute

Başvuru Belgeleri:TypeConverterAttribute

Şunlar için geçerlidir: Sınıf, özellik, yöntem (XAML geçerli tek yöntem durumu, eklenebilir bir üyeyi destekleyen bir get erişimcidir).

Bağımsız değişkenler: öğesinin Type .TypeConverter

TypeConverterAttribute bir XAML bağlamında özel TypeConverteröğesine başvurur. Bu TypeConverter , özel türler veya bu türün üyeleri için tür dönüştürme davranışı sağlar.

TypeConverterAttribute Tür dönüştürücü uygulamanıza başvurarak özniteliğini türünüz için 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ücünüz, işaretlemedeki öznitelikler veya başlatma metni için kullanılan bir dizeden hedef türünüze dönüştürebilmelidir. Daha fazla bilgi için bkz . TypeConverters ve XAML.

Bir türün tüm değerlerine uygulamak yerine, belirli bir özellik üzerinde XAML için tür dönüştürücü davranışı da oluşturulabilir. Bu durumda, özellik tanımına (özel get ve set tanımları değil dış tanım) uygularsınızTypeConverterAttribute.

Özel eklenebilir üyenin XAML kullanımına yönelik bir tür dönüştürücü davranışı, XAML kullanımını destekleyen yöntem erişimcisine get uygulanarak TypeConverterAttribute atanabilir.

benzer şekilde TypeConverter, TypeConverterAttribute XAML'nin varlığından önce .NET'te mevcut ve tür dönüştürücü modeli başka amaçlara hizmet etti. öğesine başvurmak ve kullanmak TypeConverterAttributeiçin bunu tam olarak nitelemeniz veya için System.ComponentModelbir using deyim sağlamanız gerekir. Ayrıca projenize Sistem derlemesini de ekleyin.

Uidpropertyattribute

Başvuru Belgeleri:UidPropertyAttribute

Şunlar için geçerlidir: Sınıf

Bağımsız değişkenler: İlgili özelliğe ada göre başvuran bir dize.

x:Uid Yönergesi'ne diğer ad veren bir sınıfın CLR özelliğini gösterir.

Usableduringınitializationattribute

Başvuru Belgeleri:UsableDuringInitializationAttribute

Şunlar için geçerlidir: Sınıf

Bağımsız Değişkenler: Boole değeri. Özniteliğin amaçlanan amacı için kullanılırsa, değeri olarak trueayarlanmalıdır.

Türün XAML nesne grafı oluşturma sırasında yukarıdan aşağıya derlenip derlenmiş olmadığını gösterir. Bu, programlama modelinizin tanımıyla büyük olasılıkla yakından ilgili olan gelişmiş bir kavramdır. Daha fazla bilgi için bkz. UsableDuringInitializationAttribute.

Valueserializerattribute

Başvuru Belgeleri:ValueSerializerAttribute

Şunlar için geçerlidir: Sınıf, özellik, yöntem (XAML geçerli tek yöntem durumu, eklenebilir bir üyeyi destekleyen bir get erişimcidir).

Bağımsız değişkenler:Type Öznitelikli türün veya belirli öznitelikli özelliğin tüm özellikleri seri hale getirildiğinde kullanılacak değer serileştiricisi destek sınıfını belirten A.

ValueSerializer bir değerinden daha fazla durum ve bağlam gerektiren bir TypeConverter değer serileştirme sınıfı belirtir. ValueSerializereklenebilir üye için statik get erişimci yöntemine ValueSerializerAttribute özniteliği uygulanarak eklenebilir bir üyeyle ilişkilendirilebilir. Değer serileştirmesi numaralandırmalar, arabirimler ve yapılar için de geçerlidir, ancak temsilciler için geçerli değildir.

Whitespacesignificantcollectionattribute

Başvuru Belgeleri:WhitespaceSignificantCollectionAttribute

Şunlar için geçerlidir: Sınıf, özellikle de karma içeriği barındırması beklenen koleksiyon türleri; burada nesne öğelerinin etrafındaki boşluklar kullanıcı arabirimi gösterimi için önemli olabilir.

Bağımsız Değişkenler: Yok.

WhitespaceSignificantCollectionAttribute bir koleksiyon türünün, XAML düğümü akışının koleksiyon içindeki değer düğümlerinin oluşturulmasını etkileyen bir XAML işlemcisi tarafından önemli ölçüde boşluk olarak işlenmesi gerektiğini belirtir. Daha fazla bilgi için bkz . XAML'de boşluk işleme.

Xamldeferloadattribute

Başvuru Belgeleri:XamlDeferLoadAttribute

Şunlar için geçerlidir: Sınıf, özellik.

Bağımsız değişkenler: dize olarak iki ilişkilendirme form türünü veya olarak Typetürünü destekler. Bkz. XamlDeferLoadAttribute.

Bir sınıfın veya özelliğin XAML için ertelenmiş bir yük kullanımına (şablon davranışı gibi) sahip olduğunu gösterir ve erteleme davranışını ve hedef/içerik türünü etkinleştiren sınıfı bildirir.

Xamlsetmarkupextensionattribute

Başvuru Belgeleri:XamlSetMarkupExtensionAttribute

Şunlar için geçerlidir: Sınıf

Bağımsız değişkenler: Geri çağırmayı adlandırın.

Bir sınıfın bir veya daha fazla özelliği için değer sağlamak üzere işaretleme uzantısı kullanabileceğini gösterir ve sınıfın herhangi bir özelliğinde işaretleme uzantısı kümesi işlemi gerçekleştirmeden önce XAML yazıcısının çağırması gereken bir işleyiciye başvurur.

Xamlsettypeconverterattribute

Başvuru Belgeleri:XamlSetTypeConverterAttribute

Şunlar için geçerlidir: Sınıf

Bağımsız değişkenler: Geri çağırmayı adlandırın.

Bir sınıfın bir veya daha fazla özelliği için değer sağlamak üzere tür dönüştürücüsü kullanabileceğini gösterir ve sınıfın herhangi bir özelliğinde tür dönüştürücü kümesi işlemi gerçekleştirmeden önce XAML yazıcısının çağırması gereken bir işleyiciye başvurur.

Xmllangpropertyattribute

Başvuru Belgeleri:XmlLangPropertyAttribute

Şunlar için geçerlidir: Sınıf

Bağımsız değişkenler: Öznitelikli türde diğer ad xml:lang olarak atanacak özelliğin adını belirten dize.

XmlLangPropertyAttribute , XML lang yönergesine eşlenen öznitelikli türün bir özelliğini bildirir. Özelliğin türü String olmayabilir ancak bir dizeden atanabilir olması gerekir (atama, bir tür dönüştürücüsü özelliğin türüyle veya belirli bir özellikle ilişkilendirilerek gerçekleştirilebilir). Özelliğin okunması/yazılması gerekir.

Eşleme xml:lang senaryosu, çalışma zamanı nesne modelinin xmldom ile özel olarak işlenmeden XML tarafından belirtilen dil bilgilerine erişmesini sağlar.

Tanım, tanımlama türüne atanabilen tüm türetilmiş türleri devralır. Bu yaygın olmayan bir senaryo olsa da, belirli türetilmiş türe uygulayarak XmlLangPropertyAttribute tanımı belirli bir türetilmiş tür üzerinde geçersiz kılabilirsiniz.

Aşağıdaki bölümlerde, türlere veya üye tanımlarına uygulanmayan ancak bunun yerine derlemelere uygulanan XAML ile ilgili öznitelikler açıklanmaktadır. Bu öznitelikler, XAML'de kullanılacak özel türler içeren bir kitaplık tanımlamanın genel hedefine bağlıdır. Özniteliklerden bazıları XAML düğüm akışını doğrudan etkilemek zorunda değildir, ancak diğer tüketicilerin kullanması için düğüm akışında geçirilir. Bilgilerin tüketicileri, XAML ad alanı bilgilerine ve ilişkili ön ek bilgilerine ihtiyaç duyan tasarım ortamlarını veya serileştirme işlemlerini içerir. XAML şema bağlamı (.NET XAML Hizmetleri varsayılanı dahil) de bu bilgileri kullanır.

Xmlnscompatiblewithattribute

Başvuru Belgeleri:XmlnsCompatibleWithAttribute

Bağımsız değişken:

  • Alt dizinine eklenecek XAML ad alanının tanımlayıcısını belirten bir dize.

  • XAML ad alanını önceki bağımsız değişkenden çıkarabilen 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 dizinine alınabileceğini belirtir. Genellikle, alt XAML ad alanı daha önce tanımlanmış XmlnsDefinitionAttributebir içinde belirtilir. Bu teknik, bir kitaplıktaki XAML kelime dağarcığını sürümlendirmek ve önceki sürüme göre daha önce tanımlanmış işaretlemeyle uyumlu hale getirmek için kullanılabilir.

Xmlnsdefinitionattribute

Başvuru Belgeleri:XmlnsDefinitionAttribute

Bağımsız değişken:

  • Tanımlanacağı XAML ad alanının tanımlayıcısını belirten bir dize.

  • CLR ad alanını adlandıran bir dize. CLR ad alanı derlemenizdeki ortak türleri tanımlamalı ve CLR ad alanı türlerinden en az biri XAML kullanımına yönelik olmalıdır.

    XmlnsDefinitionAttribute bir XAML ad alanı ile CLR ad alanı arasında derleme başına bir eşleme belirtir. Bu eşleme daha sonra XAML nesne yazıcısı veya XAML şema bağlamı tarafından tür çözümlemesi için kullanılır.

    Bir derlemeye birden XmlnsDefinitionAttribute fazla uygulanabilir. Bu işlem aşağıdaki nedenlerle 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ı içindeki tüm türlerin XAML tarafından kullanılabilir olmasını istersiniz. Bu durumda, aynı XmlNamespace değeri ama farklı ClrNamespace değerleri kullanarak birkaç XmlnsDefinitionAttribute öznitelik uygularsınız. Bu, özellikle çerçevenizin veya uygulamanızın ortak kullanımda varsayılan XAML ad alanı olmasını amaçlayan XAML ad alanı için eşlemeler tanımlıyorsanız kullanışlıdır.

  • Kitaplık tasarımı birden çok CLR ad alanı içerir ve bu CLR ad alanları içindeki türlerin kullanımları arasında kasıtlı bir XAML ad alanı ayrımı istiyorsunuz.

  • Derlemede bir CLR ad alanı tanımlarsınız ve bunun birden fazla XAML ad alanı üzerinden erişilebilir olmasını istersiniz. Bu senaryo, aynı kod tabanına sahip birden çok sözcük dağarcığını desteklediğiniz zaman oluşur.

  • XAML dil desteğini bir veya daha fazla CLR ad alanında tanımlarsınız. Bu durumda, XmlNamespace değeri olmalıdır http://schemas.microsoft.com/winfx/2006/xaml.

Xmlnsprefixattribute

Başvuru Belgeleri:XmlnsPrefixAttribute

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 bir ön ek belirtir. Ön ek, .NET XAML Hizmetleri XamlXmlWritertarafından seri hale getirilmiş bir XAML dosyasında öğe ve öznitelik yazarken veya XAML uygulayan bir kitaplık XAML düzenleme özelliklerine sahip bir tasarım ortamıyla etkileşime geçtiğinde kullanışlıdır.

    Bir derlemeye birden XmlnsPrefixAttribute fazla uygulanabilir. Bu işlem aşağıdaki nedenlerle 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özcük dağarcığını destekliyorsunuz ve her sözlük ve XAML ad alanı için farklı ön ekleri kullanıyorsunuz.

  • Derlemede XAML dil desteği tanımlarsınız ve için http://schemas.microsoft.com/winfx/2006/xamlbir XmlnsDefinitionAttribute değeriniz vardır. Bu durumda, genellikle ön ekini xyükseltmeniz gerekir.

Dekont

.NET XAML Hizmetleri, XAML ile ilgili özniteliğini RootNamespaceAttributede 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.

Ayrıca bkz.