Atributy CLR související s XAML pro vlastní typy a knihovny

Toto téma popisuje atributy CLR (Common Language Runtime), které jsou definovány službami .NET XAML Services. Popisuje také další atributy CLR, které jsou definovány v .NET, které mají scénář související s XAML pro aplikaci na sestavení nebo typy. Přiřazení sestavení, typů nebo členů pomocí těchto atributů CLR poskytuje informace o systému typů XAML souvisejících s vašimi typy. Informace jsou poskytovány libovolnému příjemci XAML, který používá služby .NET XAML ke zpracování datového proudu uzlu XAML přímo nebo prostřednictvím vyhrazených čteček XAML a zapisovačů XAML.

Použití atributů CLR zahrnuje, že k definování typů používáte celkový modul CLR, jinak tyto atributy nejsou k dispozici. Pokud k definování backingu typu použijete CLR, pak výchozí kontext schématu XAML používaný zapisovači XAML služby .NET XAML může číst připisování CLR prostřednictvím reflexe proti záložním sestavením.

Následující části popisují atributy související s XAML, které můžete použít pro vlastní typy nebo vlastní členy. Každý atribut CLR komunikuje informace, které jsou relevantní pro systém typů XAML. V cestě k načtení pomáhají atributové informace čtenáři XAML vytvořit platný datový proud uzlu XAML, nebo pomáhá zapisovači XAML vytvořit platný objektový graf. V cestě pro uložení jsou přiřazené informace, které pomáhají čtenáři XAML vytvořit platný datový proud uzlu XAML, který rekonstituuje systémové informace o typu XAML; nebo deklaruje rady nebo požadavky serializace pro zapisovač XAML nebo jiné uživatele XAML.

AmbientAttribute

Referenční dokumentace:AmbientAttribute

Platí pro: Členy třídy, vlastnosti nebo get přístupového objektu, které podporují připojitelné vlastnosti.

Argumenty: Žádné

AmbientAttribute označuje, že vlastnost nebo všechny vlastnosti, které přebírají atribut typu, by měly být interpretovány pod konceptem okolní vlastnosti v XAML. Koncept okolí souvisí s tím, jak procesory XAML určují vlastníky typů členů. Okolí vlastnost je vlastnost, ve které se očekává, že hodnota bude k dispozici v kontextu analyzátoru při vytváření objektového grafu, ale kde je typické vyhledávání člena typu pozastaveno pro okamžité vytváření sady uzlů XAML.

Okolní koncept lze použít pro připojitelné členy, které nejsou reprezentovány jako vlastnosti z hlediska způsobu, jakým clR atribution definuje AttributeTargets. Použití přisuzování metody by se mělo použít pouze pro get přístup, který podporuje připojitelné využití pro XAML.

ConstructorArgumentAttribute

Referenční dokumentace:ConstructorArgumentAttribute

Platí pro: Třída

Argumenty: Řetězec, který určuje název vlastnosti, která odpovídá jednomu argumentu konstruktoru.

ConstructorArgumentAttribute určuje, že objekt lze inicializovat pomocí syntaxe konstruktoru bez parametrů a že vlastnost zadaného názvu poskytuje informace o konstrukci. Tyto informace jsou primárně určené pro serializaci XAML. Další informace najdete na webu ConstructorArgumentAttribute.

ContentPropertyAttribute

Referenční dokumentace:ContentPropertyAttribute

Platí pro: Třída

Argumenty: Řetězec, který určuje název člena atributu typu.

ContentPropertyAttribute označuje, že vlastnost pojmenovaná argumentem by měla sloužit jako vlastnost obsahu XAML pro tento typ. Definice vlastnosti obsahu XAML dědí do všech odvozených typů, které lze přiřadit k definujícímu typu. Definici konkrétního odvozeného typu můžete přepsat použitím ContentPropertyAttribute konkrétního odvozeného typu.

Pro vlastnost, která slouží jako vlastnost obsahu XAML, lze v použití XAML vynechat označování elementu vlastnosti. Obvykle určíte vlastnosti obsahu XAML, které propagují zjednodušené značky XAML pro váš obsah a modely zahrnutí. Vzhledem k tomu, že jako vlastnost obsahu XAML může být určen pouze jeden člen, můžete se někdy rozhodnout, který z několika vlastností kontejneru typu by měl být určen jako vlastnost obsahu XAML. Ostatní vlastnosti kontejneru musí být použity s explicitními elementy vlastností.

Ve streamu uzlu XAML vlastnosti obsahu XAML stále vytvářejí StartMember a EndMember uzly pomocí názvu vlastnosti pro objekt XamlMember. Chcete-li zjistit, zda člen je vlastnost obsahu XAML, prozkoumejte XamlType hodnotu z StartObject pozice a získejte hodnotu ContentProperty.

ContentWrapperAttribute

Referenční dokumentace:ContentWrapperAttribute

Platí pro: Třída, konkrétně typy kolekcí.

Argumenty: Určuje Type typ, který se má použít jako typ obálky obsahu pro cizí obsah.

ContentWrapperAttribute určuje jeden nebo více typů pro přidružený typ kolekce, který se použije k zabalení cizího obsahu. Cizí obsah odkazuje na případy, kdy omezení systému typů u typu vlastnosti obsahu nezachytává všechny možné případy obsahu, které by podporovalo použití XAML pro vlastnící typ. Podpora XAML pro obsah určitého typu může například podporovat řetězce v obecném Collection<T>typu silného typu . Obálky obsahu jsou užitečné pro migraci před existující konvence revizí do koncepce xaml přiřaditelných hodnot pro kolekce, jako je migrace konfekce související s textem režim stanu ls.

Chcete-li zadat více než jeden typ obálky obsahu, použijte atribut vícekrát.

DependsOnAttribute

Referenční dokumentace:DependsOnAttribute

Platí pro: Vlastnost

Argumenty: Řetězec, který určuje název jiného člena atributu typu.

DependsOnAttribute označuje, že atribut vlastnost závisí na hodnotě jiné vlastnosti. Použití tohoto atributu na definici vlastnosti zajišťuje, aby závislé vlastnosti byly zpracovány jako první při zápisu objektu XAML. Použití specifikovaných DependsOnAttribute výjimečných případů vlastností u typů, kde musí být při vytváření platného objektu dodrženo konkrétní pořadí analýzy.

Na definici vlastnosti můžete použít více DependsOnAttribute případů.

MarkupExtensionReturnTypeAttribute

Referenční dokumentace:MarkupExtensionReturnTypeAttribute

Platí pro: Třída, která má být odvozeným typem MarkupExtension .

Argumenty: A Type , který určuje nejpřesnější typ, který má očekávat v ProvideValue důsledku atributu MarkupExtension.

Další informace naleznete v tématu Rozšíření značek pro XAML Přehled.

NameScopePropertyAttribute

Referenční dokumentace:NameScopePropertyAttribute

Platí pro: Třída

Argumenty: Podporuje dvě formy přisuzování:

  • Řetězec, který určuje název vlastnosti u atributu typu.

  • Řetězec, který určuje název vlastnosti, a Type typ, který definuje pojmenovanou vlastnost. Tento formulář slouží k zadání připojitelného člena jako vlastnosti XAML namescope.

NameScopePropertyAttribute určuje vlastnost, která poskytuje hodnotu XAML namescope pro atribut třídy. Očekává se, že vlastnost namescope XAML odkazuje na objekt, který implementuje INameScope a uchovává skutečný názvový rozsah XAML, jeho úložiště a jeho chování.

RuntimeNamePropertyAttribute

Referenční dokumentace:RuntimeNamePropertyAttribute

Platí pro: Třída

Argumenty: Řetězec, který určuje název vlastnosti názvu za běhu u atributu typu.

RuntimeNamePropertyAttributehlásí vlastnost atributu typu, která se mapuje na direktivu XAML x:Name. Vlastnost musí být typu String a musí být pro čtení a zápis.

Definice dědí do všech odvozených typů, které lze přiřadit k definujícímu typu. Definici konkrétního odvozeného typu můžete přepsat použitím RuntimeNamePropertyAttribute konkrétního odvozeného typu.

TrimSurroundingWhitespaceAttribute

Referenční dokumentace:TrimSurroundingWhitespaceAttribute

Platí pro: Typy

Argumenty: Žádné.

TrimSurroundingWhitespaceAttributese používá u konkrétních typů, které se mohou objevit jako podřízené prvky v rámci prázdného místa významného obsahu (obsah uchovávaný kolekcí).WhitespaceSignificantCollectionAttribute TrimSurroundingWhitespaceAttribute je relevantní hlavně pro cestu uložení, ale je k dispozici v systému typů XAML v cestě načtení prozkoumáním XamlType.TrimSurroundingWhitespace. Další informace najdete v tématu Zpracování prázdných znaků v jazyce XAML.

Typeconverterattribute

Referenční dokumentace:TypeConverterAttribute

Platí pro: Třída, vlastnost, metoda (jediný případ platné metody XAML je get přístupový objekt, který podporuje připojitelný člen).

Argumenty: The Type of the TypeConverter.

TypeConverterAttribute v kontextu XAML odkazuje na vlastní TypeConverter. To TypeConverter poskytuje chování při převodu typů pro vlastní typy nebo členy tohoto typu.

TypeConverterAttribute Použijte atribut na váš typ odkazující na implementaci převaděče typů. Převaděče typů pro XAML můžete definovat u tříd, struktur nebo rozhraní. Pro výčty není nutné zadávat převod typu, který je nativně povolený.

Převaděč typů by měl být schopen převést z řetězce, který se používá pro atributy nebo inicializační text v kódu, na zamýšlený cílový typ. Další informace naleznete v tématu TypeConverters a XAML.

Místo použití u všech hodnot typu lze u konkrétní vlastnosti vytvořit také chování převaděče typů pro XAML. V tomto případě použijete TypeConverterAttribute definici vlastnosti (vnější definici, nikoli konkrétní get a set definice).

Chování převaděče typů pro použití vlastního připojitelného členu XAML lze přiřadit použitím TypeConverterAttribute přístupového objektu get metody, který podporuje použití XAML.

TypeConverterTypeConverterAttribute Podobně jako v rozhraní .NET existoval před existenci XAML a model převaděče typů sloužil jiným účelům. Chcete-li odkazovat a používat TypeConverterAttribute, musíte jej plně kvalifikovat nebo poskytnout using prohlášení pro System.ComponentModel. Do projektu také zahrňte sestavení systému.

UidPropertyAttribute

Referenční dokumentace:UidPropertyAttribute

Platí pro: Třída

Argumenty: Řetězec, který odkazuje na příslušnou vlastnost podle názvu.

Označuje CLR vlastnost třídy, která aliasy x:Uid Direktiva.

PoužitelnéDuringInitializationAttribute

Referenční dokumentace:UsableDuringInitializationAttribute

Platí pro: Třída

Argumenty: Logická hodnota. Pokud se používá pro zamýšlený účel atributu, měla by být hodnota nastavena na truehodnotu .

Určuje, zda je typ vytvořen shora dolů během vytváření grafu objektu XAML. Jedná se o pokročilý koncept, který pravděpodobně úzce souvisí s definicí programovacího modelu. Další informace najdete na webu UsableDuringInitializationAttribute.

ValueSerializerAttribute

Referenční dokumentace:ValueSerializerAttribute

Platí pro: Třída, vlastnost, metoda (jediný případ platné metody XAML je get přístupový objekt, který podporuje připojitelný člen).

Argumenty: A Type , který určuje hodnotu serializátor podporuje třídu, která se má použít při serializaci všech vlastností atributu typ, nebo konkrétní atribut vlastnost.

ValueSerializer určuje třídu serializace hodnot, která vyžaduje více stavu a kontextu, než má TypeConverter . ValueSerializer lze přidružit k připojitelnému členu použitím ValueSerializerAttribute atributu u metody statického get přístupového objektu pro připojitelný člen. Serializace hodnot je také použitelná pro výčty, rozhraní a struktury, ale ne pro delegáty.

WhitespaceSignificantCollectionAttribute

Referenční dokumentace:WhitespaceSignificantCollectionAttribute

Platí pro: Třída, konkrétně typy kolekcí, které mají být hostitelem smíšeného obsahu, kde prázdné znaky kolem prvků objektu mohou být významné pro reprezentaci uživatelského rozhraní.

Argumenty: Žádné.

WhitespaceSignificantCollectionAttribute označuje, že typ kolekce by měl být zpracován jako prázdné znaky významné procesorem XAML, který ovlivňuje konstrukci uzlů uzlu XAML v rámci kolekce hodnotových uzlů. Další informace najdete v tématu Zpracování prázdných znaků v jazyce XAML.

XamlDeferLoadAttribute

Referenční dokumentace:XamlDeferLoadAttribute

Platí pro: Class, property.

Argumenty: Podporuje dva typy formulářů přisuzování jako řetězce nebo typy jako Type. Viz třída XamlDeferLoadAttribute.

Označuje, že třída nebo vlastnost má odložené využití zatížení pro XAML (například chování šablony) a hlásí třídu, která umožňuje odložení chování a její cíl/typ obsahu.

XamlSetMarkupExtensionAttribute

Referenční dokumentace:XamlSetMarkupExtensionAttribute

Platí pro: Třída

Argumenty: Pojmenuje zpětné volání.

Označuje, že třída může použít rozšíření značek k poskytnutí hodnoty jedné nebo více jeho vlastností a odkazuje na obslužnou rutinu, kterou by zapisovač XAML měl volat před provedením operace sady rozšíření značek pro libovolnou vlastnost třídy.

XamlSetTypeConverterAttribute

Referenční dokumentace:XamlSetTypeConverterAttribute

Platí pro: Třída

Argumenty: Pojmenuje zpětné volání.

Označuje, že třída může použít převaděč typů k poskytnutí hodnoty jedné nebo více jeho vlastností a odkazuje na obslužnou rutinu, kterou by zapisovač XAML měl volat před provedením operace nastavení převaděče typů u jakékoli vlastnosti třídy.

XmlLangPropertyAttribute

Referenční dokumentace:XmlLangPropertyAttribute

Platí pro: Třída

Argumenty: Řetězec, který určuje název vlastnosti, která má alias pro xml:lang daný typ atributu.

XmlLangPropertyAttribute sestavuje vlastnost atributu typu, který se mapuje na direktivu XML lang . Vlastnost není nutně typu, String ale musí být přiřaditelná z řetězce (přiřazení lze provést přidružením převaděče typů k typu vlastnosti nebo ke konkrétní vlastnosti). Vlastnost musí být jen pro čtení a zápis.

Scénář mapování xml:lang je takový, aby objektový model modulu runtime získal přístup k informacím jazyka určeným jazykem XML bez konkrétního zpracování pomocí xmlDOM.

Definice dědí do všech odvozených typů, které lze přiřadit k definujícímu typu. Definici konkrétního odvozeného typu můžete přepsat použitím XmlLangPropertyAttribute konkrétního odvozeného typu, i když se jedná o neobvyklý scénář.

Následující části popisují atributy související s XAML, které nejsou použity u typů nebo definic členů, ale jsou použity na sestavení. Tyto atributy jsou relevantní pro celkový cíl definování knihovny, která obsahuje vlastní typy, které se mají použít v XAML. Některé atributy nemusí nutně ovlivnit stream uzlu XAML přímo, ale předávají se ve streamu uzlu pro ostatní uživatele, kteří ho budou používat. Příjemci informací zahrnují návrhová prostředí nebo procesy serializace, které potřebují informace o oboru názvů XAML a přidružené informace o předponě. Tento údaj používá také kontext schématu XAML (včetně výchozího nastavení služeb XAML .NET XAML).

XmlnsCompatibleWithAttribute

Referenční dokumentace:XmlnsCompatibleWithAttribute

Argumenty:

  • Řetězec, který určuje identifikátor oboru názvů XAML pro podsadume.

  • Řetězec, který určuje identifikátor oboru názvů XAML, který může subsume obor názvů XAML z předchozího argumentu.

    XmlnsCompatibleWithAttribute určuje, že obor názvů XAML může být podsumován jiným oborem názvů XAML. Obvykle je dílčí obor názvů XAML uveden v dříve definovaném XmlnsDefinitionAttributeoboru názvů . Tuto techniku lze použít ke správě slovníku XAML v knihovně a k zajištění kompatibility s dříve definovanými revizemi oproti slovníku starší verze.

Xmlnsdefinitionattribute

Referenční dokumentace:XmlnsDefinitionAttribute

Argumenty:

  • Řetězec, který určuje identifikátor oboru názvů XAML, který se má definovat.

  • Řetězec, který pojmenuje obor názvů CLR. Obor názvů CLR by měl definovat veřejné typy v sestavení a alespoň jeden z typů oboru názvů CLR by měl být určen pro použití XAML.

    XmlnsDefinitionAttribute určuje mapování na základě sestavení mezi oborem názvů XAML a oborem názvů CLR, který se pak používá pro překlad typů pomocí zapisovače objektu XAML nebo kontextu schématu XAML.

    Na sestavení lze použít více než jeden XmlnsDefinitionAttribute . To může být provedeno z libovolné kombinace následujících důvodů:

  • Návrh knihovny obsahuje více oborů názvů CLR pro logickou organizaci přístupu k rozhraní API za běhu; Chcete však, aby všechny typy v těchto oborech názvů byly použitelné xaml odkazováním na stejný obor názvů XAML. V tomto případě použijete několik XmlnsDefinitionAttribute atributů, které používají stejnou XmlNamespace hodnotu, ale různé ClrNamespace hodnoty. To je zvlášť užitečné, pokud definujete mapování pro obor názvů XAML, který vaše architektura nebo aplikace hodlá být výchozím oborem názvů XAML v běžném použití.

  • Návrh knihovny obsahuje více oborů názvů CLR a chcete záměrné oddělení oboru názvů XAML mezi použitím typů v těchto oborech názvů CLR.

  • V sestavení definujete obor názvů CLR a chcete, aby byl přístupný prostřednictvím více než jednoho oboru názvů XAML. K tomuto scénáři dochází, když podporujete více slovníků se stejným základem kódu.

  • Podporu jazyka XAML definujete v jednom nebo více oborech názvů CLR. V tomto případě XmlNamespace by hodnota měla být http://schemas.microsoft.com/winfx/2006/xaml.

XmlnsPrefixAttribute

Referenční dokumentace:XmlnsPrefixAttribute

Argumenty:

  • Řetězec, který určuje identifikátor oboru názvů XAML.

  • Řetězec, který určuje doporučenou předponu.

    XmlnsDefinitionAttribute určuje doporučenou předponu pro obor názvů XAML. Předpona je užitečná při zápisu elementů a atributů do souboru XAML serializovaného službou .NET XAML Services XamlXmlWriternebo při interakci knihovny implementující XAML s návrhovým prostředím, které má funkce pro úpravy XAML.

    Na sestavení lze použít více než jeden XmlnsPrefixAttribute . To může být provedeno z libovolné kombinace následujících důvodů:

  • Sestavení definuje typy pro více než jeden obor názvů XAML. V tomto případě definujte různé hodnoty předpon pro každý obor názvů XAML.

  • Podporujete více slovníků a pro každý slovník a obor názvů XAML používáte různé předpony.

  • Definujete podporu jazyka XAML v sestavení a máte XmlnsDefinitionAttribute pro http://schemas.microsoft.com/winfx/2006/xaml. V tomto případě byste obvykle měli zvýšit úroveň předpony x.

Poznámka:

Služby .NET XAML také definují atribut RootNamespaceAttributesouvisející s JAZYKem XAML . Tento atribut je atribut na úrovni sestavení pro podporu systému projektu a není relevantní pro vlastní typy XAML.

Viz také