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:
| Tipo | XAML | Utilizzo |
|---|---|---|
| NullExtension | x:Null | Indica un valore nullo |
| TypeExtension | x:Type | Ottiene il Type di un oggetto |
| StaticExtension | x:Static | Recupera proprietà statiche |
| StaticResource | StaticResource | Recupera risorse in modo one-shot |
| DynamicResource | DynamicResource | Recupera le risorse in modo bidirezionale |
| ArrayExtension | x:Array | Crea un array |
| Binding | Binding | Crea un oggetto data binding |
| TemplateBinding | TemplateBinding | Recupera 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
- Pagina 1
- Pagina 3
- Pagina 4
- Pagina 5
Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.





Difficoltà
Stampa
Download 


10annidi.ASPItalia.com: iscriviti alla competizione e vinci fantastici premi ogni mese!
