Pagina 1 di 2
Silverlight: introduzione a XAML
Extensible Application Markup Language (XAML - pronunciato 'zammel') è un linguaggio derivato da XML usato per definire oggetti e le loro proprietà e metodi tipicamente usati per costruire un'interfaccia utente. XAML è stato reso popolare dal suo utilizzo nel Windows Presentation Foundation (WPF) usato per definire l'interfaccia utente di Windows Vista. XAML è stato creato da Microsoft e introdotto nella versione 3.0 del .NET Framework e può esser utilizzato per definire grafica e animazioni 2D e 3D.
Gli elementi dichiarati in XAML generalmente rappresentano oggetti esistenti nel .NET Framework. XAML viene usato molto spesso non solo nel contesto di WPF ma anche in Silverlight. Quando viene letto un file XAML, il parser instanzia gli oggetti del .NET Framework corrispondenti agli elementi dichiarati nel file XAML. Gli attributi degli elementi in genere rappresentano le proprietà di un oggetto. Si consideri il seguente frammento di codice XAML:
Il codice soprastante viene usato per definire un TextBlock in una finestra WPF. Quando il parser XAML incontra quest'elemento, crea un'istanza della classe System.Windows.Controls.TextBlock. Tale classe viene usata per mostrare una certa quantità di contenuti, quali testo e labels. Nell'esempio mostrato prima, l'oggetto TextBlock contiene un elemento Run che accomoda la formattazione del testo contenuto. Gli attributi di TextBlock e Run vengono dichiarati per settare le loro proprietà. Il codice XAML mostrato sopra produce la finestra mostrata qui sotto.

Fig 1: risultato del codice XAML appena visto
Così come per altre tecnologie del .NET Framework, potete creare documenti XAML usando un qualsiasi text editor e potete interpretare e manipolare il codice XAML attraverso un qualsiasi linguaggio di programmazione. WPF è ottimizzato per leggere, interpretare ed eseguire documenti XAML.
Si tenga a mente quando si lavora con XAML che:
- XAML è un linguaggio basato su XML, quindi è case-sensitive. Nella maggior parte dei casi, gli oggetti definiti in XAML devono corrispondere ad oggetti e proprietà realmente esistenti;
- Così come per XML, gli spazi bianchi in XAML vengono considerati come un singolo spazio;
- Tutti i documenti XML devono avere un singolo elemento radice. Tale elemento per i file XAML, quando utilizzati nel contesto di WPF, dovrebbe essere o
<Window>oppure<Page>, a seconda del tipo di applicazione che si sta creando (per Silverlight vale<Canvas>).
Sintassi alternativa per gli attributi
L'implementazione XAML illustrata nell'esempio precedente è la più semplice e maggiormente utilizzata per l'assegnamento di valori agli attributi. Ad ogni modo quando si utilizza un linguaggio basato su XML, i valori dei dati estesi possono esser definiti sia tramite gli attributi oppure attraverso dei sottoelementi. Il comportamento prestabilito per XAML prevede la definizione delle proprietà degli oggetti attraverso gli attributi e questo metodo funziona egregiamente per semplici valori. Ad ogni modo, alcune proprietà richiedono valori più complessi , come oggetti figli oppure una proprietà potrebbe avere valori multipli. In questo scenario, un semplice attributo non è sufficiente.
Nella determinazione del metodo appropriato, tenete a mente il modello relazionale per i database, in particolare le regole di normalizzazione. XML viene usato per memorizzare dati. Se XML, e in questo caso XAML, è concepito con le regole della normalizzazione in mente, le relazioni fra oggetti e relative proprietà dovrebbero adattarsi bene a XAML.
La sintassi degli elementi delle proprietà
Quando sviluppate in XML, avendo in mente i principi di progettazione dei database relazionali, un attributo tipicamente corrisponde ad una colonna in una tabella e questa è una correlazione logica. La seconda forma normale nella normalizzazione di un database relazionale, secondo il Dr. Codd, specifica che non devono esserci gruppi di attributi ridondanti e multivalore. Trasferendo questo concetto in XML, nessun attributo dovrebbe contenere valori multipli. Se sono necessari valori multipli per una certa proprietà di un oggetto, tali valori dovrebbero essere identificati attraverso l'uso di elementi addizionali invece di attributi.
Corsi online di WebMasterPoint.org:
Quando vengono usati degli elementi per identificare valori di certe proprietà in XAML, ci si riferisce alla sintassi di 'proprietà dell'elemento'. Inoltre, ogni valore delle proprietà dichiarato attraverso la sintassi che fa uso degli attributi dovrebbe essere in grado di usare anche la sintassi appena esposta, sebbene sia raro il contrario.
A titolo esemplificativo, il codice XAML usato per definire lo sfondo della finestra WPF vista sopra utilizza la sintassi che fa uso delle proprietà degli elementi.
Nel codice mostrato qui sopra lo sfondo della finestra potrebbe essere opzionalmente dichiarato attraverso un attributo come Ad ogni modo si consideri meglio il codice. Come potrebbe un singolo valore di un attributo riassumere i parametri maggiormente complessi di LinearGradientBrush? Non è possibile, quiondi per accomodare adeguatamente i valori di proprietà avanzate, i valori dovrebbero essere espressi attraverso dei sottolementi piuttosto che attraverso attributi come visto in precedenza.
Estensioni del linguaggio markup
Quando si creando documenti XAML, si tenga a mente che il parser XAML crea istanze degli oggetti quando incontra gli elementi nel documento. In molti scenari, il comportamento di default del parser potrebbe comportare un uso non ottimale della memoria. Ad esempio, nella definizione degli stili, dietro le quinte, viene creato un oggetto Style per mantenere le informazioni degli stili. Tali informazioni generalmente saranno condivise da altri oggetti nell'interfaccia utente. Specificando le informazioni sullo stile a livello di elemento per ogni oggetti dell'interfaccia, comporterà la creazione di molti oggetti che manterranno le medesime informazioni. Si consumerebbero molte meno risorse creando un singolo oggetto Style e condividendolo con gli altri oggetti semplicemente riferendosi ad esso. In aggiunta, l'informazione sugli stili potrebbe essere gestita ed aggiornata molto più facilmente se fosse definita in un unico luogo invece che in posti diversi.
La soluzione per una gestione ottimizzata della memoria è la dichiarazione di un oggetto Style globale o condiviso. Una risorsa condivisa può esser riferita da altri oggetti attraverso le estensioni del linguaggio markup. Tali estensioni consentono di definire un valore di un attributo come un riferimento ad una risorsa condivisa. Ci sono molti tipi di estensioni, fra le quali le più comuni sono Binding Markup Extension usata nel collegamento dei dati, la Static Resource Markup Extension usata per riferire risorse condivise statiche (risorse dichiarate e disponibili a tempo di compilazione) e la Dynamic Resource Markup Extension, usata per riferirsi a risorse dcondivise dinamiche (risorse disponibili a tempo d'esecuzione).
Un riferimento ad un'estensione markup viene delimitata dalle parentesi graffe. L'esempio sottostante illustra i colori dello sfondo utilizzati come risorse della finestra e riferiti come estensioni markup a risorse dinamiche.
- Sms installa virus e intercetta telefonate e sms dei cellulari. Indagini in tutta Italia e 2 denunce
Controllare il traffico telefonico dei cellulari e dei messaggini spediti appare alquanto più semplice e nello stesso apre scenari inquietanti: secondo le ultime indagini della Polizia Postale basterebbe, infatti, un sms truffaldino.
- Nuovo linguaggio programmazione Microsoft: si chiamerà M e sarà l'evoluzione del C++.Caratteristiche
- Facebook in Italia: buon successo per la festa di Roma. Il racconto dell'avvenimento
- Instant Messenger e chat più usate. Numerosi programmi da installare anche sui cellulari.
- ADSL nei comuni non raggiunti: 1500 nuove città avranno collegamento Internet con British Telecom
- Navigatore satellitare gps su cellulare, computer e qualsiasi apparecchio elettronico con Firefox e Geode
Localizziamo la nostra posizione in modo semplice ed economico grazie a questa estensione per Firefox - Adattare il sito attuale ad iPhone, senza creare una versione dedicata con contenuti duplicati grazie ai Media dei CSS
- UAC in Windows 7 sarà migliore rispetto a Vista: le modifiche previste
- Script Php e Asp blog, e-commerce, paypal e database
- Certificazioni informatiche: una nuova alternativa alla patenta europea/Ecdl proposta dall'Università di Firenze


![[SPONSOR] 9NetWeb (Link Esterno)](http://www.webmasterpoint.org/sponsor/9netweb_120.gif)
![[SPONSOR] Aruba (Link Esterno)](/sponsor/aruba_90.gif)
![[SPONSOR] ConsultingWeb (Link Esterno)](/sponsor/consultingweb_120.gif)
Stampa Pagina![[SPONSOR] eDomain (Link Esterno)](http://www.webmasterpoint.org/sponsor/edomain_120.gif)
![[SPONSOR] Rubalo.it](/sponsor/rubalo_120.gif)
![[SPONSOR] MisterDomain.eu (Link Esterno)](http://www.webmasterpoint.org/sponsor/misterdomain.gif)