Attributi CLR correlati a XAML per tipi e librerie personalizzati

In questo argomento vengono descritti gli attributi CLR (Common Language Runtime) definiti dai servizi XAML .NET. Descrive anche altri attributi CLR definiti in .NET che hanno uno scenario correlato a XAML per l'applicazione a assembly o tipi. L'attribuzione di assembly, tipi o membri con questi attributi CLR fornisce informazioni sul sistema dei tipi XAML correlate ai tipi. Le informazioni vengono fornite a qualsiasi consumer XAML che usa i servizi XAML .NET per l'elaborazione del flusso del nodo XAML direttamente o tramite lettori XAML dedicati e writer XAML.

L'uso degli attributi CLR comporta l'uso di CLR complessivo per definire i tipi. In caso contrario, tali attributi non sono disponibili. Se usi CLR per definire il supporto dei tipi, il contesto dello schema XAML predefinito usato dai writer XAML dei servizi XAML .NET può leggere l'attribuzione CLR tramite reflection rispetto agli assembly di supporto.

Le sezioni seguenti descrivono gli attributi correlati a XAML che puoi applicare ai tipi personalizzati o ai membri personalizzati. Ogni attributo CLR comunica informazioni rilevanti per un sistema di tipi XAML. Nel percorso di caricamento le informazioni con attributi consentono al lettore XAML di formare un flusso di nodi XAML valido oppure consente al writer XAML di produrre un oggetto grafico valido. Nel percorso di salvataggio le informazioni con attributi consentono al lettore XAML di formare un flusso di nodi XAML valido che ricostituisce le informazioni sul sistema dei tipi XAML; o dichiara hint di serializzazione o requisiti per il writer XAML o altri consumer XAML.

AmbientAttribute

Documentazione di riferimento:AmbientAttribute

Si applica a: membri di classe, proprietà o get funzioni di accesso che supportano proprietà associabili.

Argomenti: Nessuno

AmbientAttribute indica che la proprietà o tutte le proprietà che accettano il tipo con attributi devono essere interpretate nel concetto di proprietà di ambiente in XAML. l concetto di ambiente si riferisce al modo in cui i processori XAML determinano i proprietari dei tipi dei membri. Una proprietà di ambiente è una proprietà in cui si prevede che il valore sia disponibile nel contesto del parser durante la creazione di un oggetto grafico, ma in cui la tipica ricerca del membro del tipo viene sospesa per il set di nodi XAML immediato da creare.

Il concetto di ambiente può essere applicato ai membri associabili, che non sono rappresentati come proprietà in termini di come l'attribuzione CLR definisce AttributeTargets. L'utilizzo dell'attribuzione del metodo deve essere applicato solo per una get funzione di accesso che supporta l'utilizzo associabile per XAML.

ConstructorArgumentAttribute

Documentazione di riferimento:ConstructorArgumentAttribute

Si applica a: Classe

Argomenti: stringa che specifica il nome della proprietà che corrisponde a un singolo argomento del costruttore.

ConstructorArgumentAttribute specifica che un oggetto può essere inizializzato utilizzando una sintassi del costruttore senza parametri e che una proprietà del nome specificato fornisce informazioni sulla costruzione. Queste informazioni sono utili principalmente per la serializzazione XAML. Per ulteriori informazioni, vedere ConstructorArgumentAttribute.

Contentpropertyattribute

Documentazione di riferimento:ContentPropertyAttribute

Si applica a: Classe

Argomenti: stringa che specifica il nome di un membro del tipo con attributi.

ContentPropertyAttribute indica che la proprietà denominata dall'argomento deve fungere da proprietà del contenuto XAML per quel tipo. La definizione della proprietà del contenuto XAML eredita a tutti i tipi derivati assegnabili al tipo di definizione. È possibile eseguire l'override della definizione in un tipo derivato specifico applicando ContentPropertyAttribute al tipo derivato specifico.

Per la proprietà che funge da proprietà del contenuto XAML, l'assegnazione di tag agli elementi di proprietà per la proprietà può essere omessa nell'utilizzo xaml. In genere, designi le proprietà del contenuto XAML che promuovono un markup XAML semplificato per i tuoi modelli di contenuto e contenimento. Poiché come proprietà del contenuto XAML è possibile designare un solo membro, a volte sono disponibili scelte di progettazione per quanto riguarda le diverse proprietà del contenitore di un tipo da designare come proprietà del contenuto XAML. Le altre proprietà del contenitore devono essere usate con elementi di proprietà espliciti.

Nel flusso del nodo XAML le proprietà del contenuto XAML producono StartMember ancora nodi e EndMember usando il nome della proprietà per .XamlMember Per determinare se un membro è la proprietà del contenuto XAML, esaminare il XamlType valore dalla StartObject posizione e ottenere il valore di ContentProperty.

ContentWrapperAttribute

Documentazione di riferimento:ContentWrapperAttribute

Si applica a: Classe, in particolare tipi di raccolta.

Argomenti: oggetto Type che specifica il tipo da utilizzare come tipo wrapper del contenuto per il contenuto esterno.

ContentWrapperAttribute specifica uno o più tipi sul tipo di raccolta associato che verrà utilizzato per eseguire il wrapping del contenuto esterno. Il contenuto esterno si riferisce ai casi in cui i vincoli di sistema dei tipi sul tipo della proprietà del contenuto non acquisiscono tutti i possibili casi di contenuto supportati dall'utilizzo XAML per il tipo proprietario. Ad esempio, il supporto XAML per il contenuto di un particolare tipo potrebbe supportare stringhe in un generico Collection<T>fortemente tipizzato. I wrapper di contenuto sono utili per la migrazione di convenzioni di markup preesistenti nella concezione xaml di valori assegnabili per le raccolte, ad esempio la migrazione di con modalità tenda ls correlati al testo.

Per specificare più tipi di wrapper del contenuto, applicare l'attributo più volte.

DependsOnAttribute

Documentazione di riferimento:DependsOnAttribute

Si applica a: Proprietà

Argomenti: stringa che specifica il nome di un altro membro del tipo con attributi.

DependsOnAttribute indica che la proprietà con attributi dipende dal valore di un'altra proprietà. L'applicazione di questo attributo a una definizione di proprietà garantisce che le proprietà dipendenti vengano elaborate per prime nella scrittura di oggetti XAML. Gli utilizzi di DependsOnAttribute specificano i casi eccezionali di proprietà sui tipi in cui deve essere seguito un ordine specifico di analisi per la creazione di oggetti valida.

È possibile applicare più DependsOnAttribute casi a una definizione di proprietà.

Markupextensionreturntypeattribute

Documentazione di riferimento:MarkupExtensionReturnTypeAttribute

Si applica a: Classe, che dovrebbe essere un MarkupExtension tipo derivato.

Argomenti: oggetto Type che specifica il tipo più preciso da prevedere come ProvideValue risultato dell'attributo MarkupExtension.

Per altre informazioni, vedere Cenni preliminari sulle estensioni di markup per XAML.

Namescopepropertyattribute

Documentazione di riferimento:NameScopePropertyAttribute

Si applica a: Classe

Argomenti: supporta due forme di attribuzione:

  • Stringa che specifica il nome di una proprietà sul tipo con attributi.

  • Stringa che specifica il nome di una proprietà e un Type oggetto per il tipo che definisce la proprietà denominata. Questo modulo consente di specificare un membro associabile come proprietà namescope XAML.

NameScopePropertyAttribute specifica una proprietà che fornisce il valore namescope XAML per la classe con attributi. La proprietà namescope XAML dovrebbe fare riferimento a un oggetto che implementa INameScope e contiene l'ambito dei nomi XAML effettivo, il relativo archivio e il relativo comportamento.

RuntimeNamePropertyAttribute

Documentazione di riferimento:RuntimeNamePropertyAttribute

Si applica a: Classe

Argomenti: stringa che specifica il nome della proprietà del nome della fase di esecuzione nel tipo con attributi.

RuntimeNamePropertyAttributesegnala una proprietà del tipo con attributi mappato alla direttiva x:Name XAML. La proprietà deve essere di tipo String e deve essere di lettura/scrittura.

La definizione eredita a tutti i tipi derivati assegnabili al tipo di definizione. È possibile eseguire l'override della definizione in un tipo derivato specifico applicando RuntimeNamePropertyAttribute al tipo derivato specifico.

TrimSurroundingWhitespaceAttribute

Documentazione di riferimento:TrimSurroundingWhitespaceAttribute

Si applica a: Tipi

Argomenti: Nessuno.

TrimSurroundingWhitespaceAttribute viene applicato a tipi specifici che possono essere visualizzati come elementi figlio all'interno di contenuto significativo dello spazio vuoto (contenuto contenuto in una raccolta con WhitespaceSignificantCollectionAttribute). TrimSurroundingWhitespaceAttribute è principalmente rilevante per il percorso di salvataggio, ma è disponibile nel sistema di tipi XAML nel percorso di caricamento esaminando XamlType.TrimSurroundingWhitespace. Per altre informazioni, vedere Elaborazione di spazi vuoti in XAML.

TypeConverterAttribute

Documentazione di riferimento:TypeConverterAttribute

Si applica a: Classe, proprietà, metodo (l'unico caso di metodo xaml valido è una get funzione di accesso che supporta un membro associabile).

Argomenti: oggetto Type dell'oggetto TypeConverter.

TypeConverterAttribute in un contesto XAML fa riferimento a un oggetto personalizzato TypeConverter. In questo TypeConverter modo viene fornito il comportamento di conversione dei tipi per i tipi personalizzati o i membri di tale tipo.

Applicare l'attributo TypeConverterAttribute al tipo, facendo riferimento all'implementazione del convertitore di tipi. Puoi definire convertitori di tipi per XAML in classi, strutture o interfacce. Non è necessario fornire la conversione dei tipi per le enumerazioni, che la conversione è abilitata in modo nativo.

Il convertitore di tipi deve essere in grado di eseguire la conversione da una stringa usata per attributi o testo di inizializzazione nel markup, nel tipo di destinazione previsto. Per altre informazioni, vedi TypeConverters e XAML.

Invece di applicare a tutti i valori di un tipo, è anche possibile stabilire un comportamento del convertitore di tipi per XAML in una proprietà specifica. In questo caso, si applica TypeConverterAttribute alla definizione della proprietà (la definizione esterna, non le definizioni e set specificheget).

Un comportamento del convertitore di tipi per l'utilizzo XAML di un membro associabile personalizzato può essere assegnato applicando TypeConverterAttribute alla funzione di accesso al get metodo che supporta l'utilizzo xaml.

Analogamente a TypeConverter, TypeConverterAttribute esisteva in .NET prima dell'esistenza di XAML e il modello del convertitore di tipi ha servito altri scopi. Per fare riferimento e usare TypeConverterAttribute, è necessario qualificarlo completamente o fornire un'istruzione using per System.ComponentModel. Includere anche l'assembly di sistema nel progetto.

Uidpropertyattribute

Documentazione di riferimento:UidPropertyAttribute

Si applica a: Classe

Argomenti: stringa che fa riferimento alla proprietà pertinente in base al nome.

Indica la proprietà CLR di una classe che alias la direttiva x:Uid.

Usableduringinitializationattribute

Documentazione di riferimento:UsableDuringInitializationAttribute

Si applica a: Classe

Argomenti: valore booleano. Se usato per lo scopo previsto dell'attributo, il valore deve essere impostato su true.

Indica se il tipo viene compilato dall'alto verso il basso durante la creazione dell'oggetto grafico XAML. Si tratta di un concetto avanzato, probabilmente strettamente correlato alla definizione del modello di programmazione. Per ulteriori informazioni, vedere UsableDuringInitializationAttribute.

Valueserializerattribute

Documentazione di riferimento:ValueSerializerAttribute

Si applica a: Classe, proprietà, metodo (l'unico caso di metodo xaml valido è una get funzione di accesso che supporta un membro associabile).

Argomenti: oggetto Type che specifica la classe di supporto del serializzatore di valori da utilizzare durante la serializzazione di tutte le proprietà del tipo con attributi o la proprietà con attributi specifica.

ValueSerializer specifica una classe di serializzazione di valori che richiede più stato e contesto rispetto a un oggetto TypeConverter . ValueSerializer può essere associato a un membro associabile applicando l'attributo ValueSerializerAttribute al metodo della funzione di accesso statico get per il membro associabile. La serializzazione dei valori è applicabile anche per enumerazioni, interfacce e strutture, ma non per i delegati.

Whitespacesignificantcollectionattribute

Documentazione di riferimento:WhitespaceSignificantCollectionAttribute

Si applica a: Classe, in particolare tipi di raccolta che devono ospitare contenuto misto, in cui lo spazio vuoto intorno agli elementi dell'oggetto potrebbe essere significativo per la rappresentazione dell'interfaccia utente.

Argomenti: Nessuno.

WhitespaceSignificantCollectionAttribute indica che un tipo di raccolta deve essere elaborato come spazio vuoto significativo da un processore XAML, che influenza la costruzione dei nodi del flusso di nodi XAML all'interno della raccolta. Per altre informazioni, vedere Elaborazione di spazi vuoti in XAML.

XamlDeferLoadAttribute

Documentazione di riferimento:XamlDeferLoadAttribute

Si applica a: Classe, proprietà.

Argomenti: supporta due tipi di forme di attribuzione come stringhe o tipi come Type. Vedere XamlDeferLoadAttribute.

Indica che una classe o una proprietà ha un utilizzo posticipato del carico per XAML (ad esempio un comportamento del modello) e segnala la classe che abilita il comportamento di rinvio e il relativo tipo di destinazione/contenuto.

Xamlsetmarkupextensionattribute

Documentazione di riferimento:XamlSetMarkupExtensionAttribute

Si applica a: Classe

Argomenti: assegna un nome al callback.

Indica che una classe può usare un'estensione di markup per fornire un valore per una o più delle relative proprietà e fa riferimento a un gestore che un writer XAML deve chiamare prima di eseguire un'operazione di set di estensioni di markup su qualsiasi proprietà della classe.

XamlSetTypeConverterAttribute

Documentazione di riferimento:XamlSetTypeConverterAttribute

Si applica a: Classe

Argomenti: assegna un nome al callback.

Indica che una classe può usare un convertitore di tipi per fornire un valore per una o più delle relative proprietà e fa riferimento a un gestore che un writer XAML deve chiamare prima di eseguire un'operazione di impostazione del convertitore di tipi su qualsiasi proprietà della classe.

XmlLangPropertyAttribute

Documentazione di riferimento:XmlLangPropertyAttribute

Si applica a: Classe

Argomenti: stringa che specifica il nome della proprietà a cui eseguire l'alias sul xml:lang tipo con attributi.

XmlLangPropertyAttribute restituisce una proprietà del tipo con attributi mappato alla direttiva XML lang . La proprietà non è necessariamente di tipo String ma deve essere assegnabile da una stringa (l'assegnazione può essere eseguita associando un convertitore di tipi al tipo della proprietà o alla proprietà specifica). La proprietà deve essere di lettura/scrittura.

Lo scenario per il mapping xml:lang è in modo che un modello a oggetti di runtime abbia accesso alle informazioni sul linguaggio specificate in XML senza elaborarlo in modo specifico con xmlDOM.

La definizione eredita a tutti i tipi derivati assegnabili al tipo di definizione. È possibile eseguire l'override della definizione in un tipo derivato specifico applicando XmlLangPropertyAttribute al tipo derivato specifico, anche se si tratta di uno scenario non comune.

Le sezioni seguenti descrivono gli attributi correlati a XAML che non vengono applicati ai tipi o alle definizioni dei membri, ma vengono invece applicati agli assembly. Questi attributi sono pertinenti all'obiettivo generale di definire una libreria che contiene tipi personalizzati da usare in XAML. Alcuni attributi non influiscono necessariamente sul flusso del nodo XAML direttamente, ma vengono passati nel flusso del nodo per consentire ad altri consumer di usarli. I consumer per le informazioni includono ambienti di progettazione o processi di serializzazione che necessitano di informazioni sullo spazio dei nomi XAML e informazioni sui prefissi associati. Anche un contesto dello schema XAML (incluso il valore predefinito dei servizi XAML .NET) usa queste informazioni.

XmlnsCompatibleWithAttribute

Documentazione di riferimento:XmlnsCompatibleWithAttribute

Argomenti:

  • Stringa che specifica l'identificatore dello spazio dei nomi XAML da subsumere.

  • Stringa che specifica l'identificatore dello spazio dei nomi XAML che può riprendere lo spazio dei nomi XAML dall'argomento precedente.

    XmlnsCompatibleWithAttribute specifica che uno spazio dei nomi XAML può essere sottosumato da un altro spazio dei nomi XAML. In genere, lo spazio dei nomi XAML in sostituzione è indicato in un XmlnsDefinitionAttribute definito in precedenza. Questa tecnica può essere usata per il controllo delle versioni di un vocabolario XAML in una libreria e per renderla compatibile con markup definito in precedenza rispetto al vocabolario con controllo delle versioni precedente.

Xmlnsdefinitionattribute

Documentazione di riferimento:XmlnsDefinitionAttribute

Argomenti:

  • Stringa che specifica l'identificatore dello spazio dei nomi XAML da definire.

  • Stringa che assegna un nome a uno spazio dei nomi CLR. Lo spazio dei nomi CLR deve definire i tipi pubblici nell'assembly e almeno uno dei tipi di spazio dei nomi CLR deve essere destinato all'utilizzo xaml.

    XmlnsDefinitionAttribute specifica un mapping per ogni assembly tra uno spazio dei nomi XAML e uno spazio dei nomi CLR, che viene quindi usato per la risoluzione dei tipi da parte di un writer di oggetti XAML o di un contesto dello schema XAML.

    Più di uno XmlnsDefinitionAttribute può essere applicato a un assembly. Questa operazione può essere eseguita per qualsiasi combinazione dei motivi seguenti:

  • La progettazione della libreria contiene più spazi dei nomi CLR per l'organizzazione logica dell'accesso api in fase di esecuzione; Tuttavia, vuoi che tutti i tipi di questi spazi dei nomi siano utilizzabili da XAML facendo riferimento allo stesso spazio dei nomi XAML. In questo caso, si applicano diversi XmlnsDefinitionAttribute attributi usando lo stesso XmlNamespace valore ma valori diversi ClrNamespace . Ciò è particolarmente utile se si definiscono i mapping per lo spazio dei nomi XAML che il framework o l'applicazione intende essere lo spazio dei nomi XAML predefinito nell'utilizzo comune.

  • La progettazione della libreria contiene più spazi dei nomi CLR e si vuole una separazione dello spazio dei nomi XAML intenzionale tra gli utilizzi dei tipi in tali spazi dei nomi CLR.

  • Definisci uno spazio dei nomi CLR nell'assembly e vuoi che sia accessibile tramite più spazi dei nomi XAML. Questo scenario si verifica quando si supportano più vocabolari con la stessa codebase.

  • Il supporto del linguaggio XAML viene definito in uno o più spazi dei nomi CLR. In questo caso, il XmlNamespace valore deve essere http://schemas.microsoft.com/winfx/2006/xaml.

Xmlnsprefixattribute

Documentazione di riferimento:XmlnsPrefixAttribute

Argomenti:

  • Stringa che specifica l'identificatore di uno spazio dei nomi XAML.

  • Stringa che specifica un prefisso consigliato.

    XmlnsDefinitionAttribute specifica un prefisso consigliato da usare per uno spazio dei nomi XAML. Il prefisso è utile quando si scrivono elementi e attributi in un file XAML serializzato dai servizi XamlXmlWriterXAML .NET o quando una libreria di implementazione XAML interagisce con un ambiente di progettazione con funzionalità di modifica XAML.

    Più di uno XmlnsPrefixAttribute può essere applicato a un assembly. Questa operazione può essere eseguita per qualsiasi combinazione dei motivi seguenti:

  • L'assembly definisce i tipi per più spazi dei nomi XAML. In questo caso, definire valori di prefisso diversi per ogni spazio dei nomi XAML.

  • Si supportano più vocabolari e si usano prefissi diversi per ogni vocabolario e spazio dei nomi XAML.

  • Definire il supporto del linguaggio XAML nell'assembly e disporre di un XmlnsDefinitionAttribute per http://schemas.microsoft.com/winfx/2006/xaml. In questo caso, in genere è consigliabile alzare di livello il prefisso x.

Nota

I servizi XAML .NET definiscono anche l'attributo RootNamespaceAttributecorrelato a XAML. Questo attributo è un attributo a livello di assembly per il supporto del sistema di progetto e non è rilevante per i tipi personalizzati XAML.

Vedi anche