La sintassi XAML di Windows Presentation Foundation

5 pagine in totale: <<Indietro 1 2 3 4 [5]

Markup Extensions

Parlando delle caratteristiche supportate dalle Dependency Properties, in particolare del supporto al binding e resources, abbiamo accennato alle Markup Extensions. Tipicamente il parser XAML interpreta tutto quello che trova racchiuso tra virgolette come semplice testo e utilizzando il TypeConverter interpreta e crea l'oggetto o la struttura necessaria ad impostare il valore della proprietà stessa.

Benché questo sistema risulti adatto nella maggior parte dei casi, una maggiore flessibilità può risultare fondamentale, ad esempio, in casi in cui il valore della proprietà non sia noto in fase di compilazione e dipenda, ad esempio, da impostazioni determinabili solamente a runtime.

Questa flessibilità è ottenuta utilizzando le Markup Extensions: una particolare sintassi utilizzabile con XAML per specificare il valore di una proprietà.

Sicuramente uno degli usi più comuni delle MarkupExtension è quello legato all'utilizzo delle risorse:

<Button Style="{StaticResource MyStyle}" ? />

Nell'esempio precedente utilizziamo una delle Markup Extension definite in WPF, per impostare il valore della proprietà in modo che sia recuperato dalla collezione di risorse definite nell'applicazione.

Quando il compilatore XAML trova il valore della proprietà Style racchiuso tra parentesi graffe, istanzia il tipo rappresentato dalla stringa immediatamente successiva alla parentesi graffa aperta e il resto del contenuto alla fase di inizializzazione dell'oggetto di extension.

Nel nostro esempio il compilatore tenta come prima cosa di istanziare la classe StaticResource, non riuscendo a trovare nessuna corrispondenza in nessun namespace di XAML, per comportamento predefinito prova ad apporre il suffisso Extension al nome, ottenendo come risultato StaticResourceExtension. Questa classe che si trova in System.Windows.Serialization è utilizzabile dal compilatore per creare una nuova istanza della classe StaticResource passando la stringa MyStyle al costruttore per ottenere così il vero valore da associare alla proprietà.

Di seguito una tabella con l'elenco delle Markup Extension definite in WPF:

TipoXAMLUtilizzo
NullExtensionx:NullIndica un valore nullo
TypeExtensionx:TypeOttiene il Type di un oggetto
StaticExtensionx:StaticRecupera proprietà statiche
StaticResourceStaticResourceRecupera risorse in modo one-shot
DynamicResourceDynamicResourceRecupera le risorse in modo bidirezionale
ArrayExtensionx:ArrayCrea un array
BindingBindingCrea un oggetto data binding
TemplateBindingTemplateBindingRecupera il valore di una proprietà in un template

Conclusioni

Per concludere, il Property System è uno dei componenti fondamentali dell'architettura di WPF.
La sua integrazione con il linguaggio XAML rende operazioni complesse, come la dipendenza tra proprietà, l'uso di risorse e l'esecuzione di animazioni anche complesse alla portata di un linguaggio dichiarativo, come mai era successo in passato.

5 pagine in totale: <<Indietro 1 2 3 4 [5]

Contenuti dell'articolo

Commenti
Dai un voto a questo articolo, ci aiuterà a migliorare il nostro sito (1 è il voto minimo, 5 il massimo).

Per procedere al rating dell'articolo devi essere autenticato.

Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.



TUTORIALS


IN EVIDENZA
MISC