Indice
XAML
XAML linguaggio di programmazione | |
---|---|
Autore | Microsoft |
Data di origine | giugno 2008 |
Paradigmi | programmazione dichiarativa |
Estensioni comuni | xaml |
XAML (abbreviazione di eXtensible Application Markup Language, e pronunciata "Zammel") è un linguaggio di markup basato su XML, utilizzato per descrivere l'interfaccia grafica delle applicazioni basate sulla libreria Windows Presentation Foundation[1][2].
Il linguaggio XAML si basa sugli oggetti contenuti nel Common Language Runtime e sulle loro proprietà o eventi.
Esiste un linguaggio analogo allo XAML: XML User Interface Language (XUL). Esso è un linguaggio open source dedicato alla creazione di applicazioni derivate dal progetto Mozilla.
Nel 2007, l'European Committee for Interoperable Systems dopo segnalazione di aziende di informatica ha investigato sulla possibilità che la Microsoft volesse utilizzare l'XAML per sostituire lo standard HTML[3].
XAML è ampiamente utilizzato nelle tecnologie .NET Framework 3.0 e .NET Framework 4.0, in particolare Windows Presentation Foundation (WPF)[4], Silverlight, Windows Workflow Foundation (WF), Windows Runtime XAML Framework e app di Windows Store. In WPF, XAML forma un linguaggio di markup dell'interfaccia utente per definire elementi dell'interfaccia utente, data binding, eventi e altre funzionalità. In WF, i flussi di lavoro possono essere definiti utilizzando XAML. XAML può essere utilizzato anche nelle applicazioni Silverlight, nell'obsoleto Windows 10 Mobile (in precedenza Windows Phone) e Universal Windows Platformapp, chiamate anche app di Windows Store.
Gli elementi XAML vengono mappati direttamente alle istanze di oggetti Common Language Runtime , mentre gli attributi XAML vengono mappati alle proprietà e agli eventi Common Language Runtime su tali oggetti. I file XAML possono essere creati e modificati con strumenti di progettazione visiva come Microsoft Expression Blend, Microsoft Visual Studio e il visual designer di Windows Workflow Foundation hostable. Possono anche essere creati e modificati con un editor di testo standard, un editor di codice come XAMLPad o un editor grafico come Vector Architect.
Tutto ciò che viene creato o implementato in XAML può essere espresso utilizzando un linguaggio .NET più tradizionale, come C # o Visual Basic .NET. Tuttavia, un aspetto chiave della tecnologia è la ridotta complessità necessaria per gli strumenti per elaborare XAML, poiché si basa su XML. Di conseguenza, stanno emergendo una varietà di prodotti, in particolare nello spazio WPF, che creano applicazioni basate su XAML. Poiché XAML si basa semplicemente su XML, sviluppatori e progettisti sono in grado di condividere e modificare i contenuti liberamente tra di loro senza richiedere la compilazione. XAML beneficia anche dell'essere una definizione dichiarativa dell'interfaccia utente anziché del codice procedurale per generarla[5].
Tecnologia
[modifica | modifica wikitesto]Un file XAML può essere compilato in un file .BAML (Binary Application Markup Language[6]), che può essere inserito come risorsa in un assembly .NET Framework. In fase di esecuzione, il motore del framework estrae il file .BAML dalle risorse dell'assembly, lo analizza e crea un flusso di lavoro o un albero visivo WPF corrispondente.
Quando viene utilizzato in Windows Presentation Foundation, XAML viene usato per descrivere le interfacce utente visive . WPF consente la definizione di oggetti 2D e 3D, rotazioni, animazioni e una varietà di altri effetti e funzionalità.
Quando viene utilizzato in contesti Windows Workflow Foundation, XAML viene utilizzato per descrivere la logica dichiarativa potenzialmente a esecuzione prolungata, come quelle create dagli strumenti di modellazione dei processi e dai sistemi di regole. Il formato di serializzazione per i flussi di lavoro era precedentemente chiamato XOML, per differenziarlo dall'uso del markup dell'interfaccia utente di XAML, ma ora non sono più distinti. Tuttavia, l'estensione del file per i file contenenti il markup del flusso di lavoro è ancora "XOML"[7][8].
Modelli
[modifica | modifica wikitesto]XAML utilizza un modo specifico per definire l'aspetto e il design chiamato Template; a differenza della sintassi Cascading Style Sheet, è più vicino a XBL[9].
Esempio
[modifica | modifica wikitesto]Questo esempio di Windows Presentation Foundation mostra il testo "Ciao, mondo!" nel contenitore XAML di primo livello denominato Canvas.
<Canvas xmlns = "http://schemas.microsoft.com/client/2007" xmlns: x = "http://schemas.microsoft.com/winfx/2006/xaml" > <TextBlock> Ciao, mondo! </TextBlock> </Canvas>
Potrebbe essere necessario modificare lo schema Microsoft[10] per funzionare sul computer. Utilizzando uno schema consigliato da Microsoft, l'esempio può essere anche:
<Canvas xmlns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation Archiviato il 13 novembre 2010 in Internet Archive." > <TextBlock> Ciao, mondo! </TextBlock> </Canvas>
Questo può essere integrato in una pagina Web se WPF è installato utilizzando XBAP (applicazioni browser XAML) che sono applicazioni compilate in esecuzione in un ambiente sandbox ospitato nel browser. Un altro modo è utilizzare il plug-in Silverlight. Il codice non può essere incluso direttamente in una pagina HTML; piuttosto deve essere caricato nella pagina tramite JavaScript. Se è installato .NET 3.0 o versione successiva, i file XAML sciolti possono anche essere visualizzati da soli in un browser Web compatibile (inclusi l'obsoleto Internet Explorer[11] e Firefox) insieme a .NET Framework 3.0, senza la necessità del plug-in Silverlight[12]. I file XAML sciolti sono file di markup limitati alla definizione del contenuto visivo di cui eseguire il rendering. Non sono compilati con un'applicazione.
<html xmlns = "http://www.w3.org/1999/xhtml" > <head> <title> Esempio XAML </title> <script type = "text / javascript" src = "MySilverlight.js" /> <script type = "text / javascript" src = "Silver.js" /> </head> <body> <div id = "MySilverlight" > </div> <script type = "text / javascript" > createMySilverlight (); </script> </body> </html>
Il file MySilverlight.js deve contenere il codice che carica il codice XAML precedente (come file XML) sotto l'elemento HTML MySilverlight.
Una parte cruciale dell'utilizzo di XAML al massimo delle sue potenzialità è fare un uso appropriato dell'associazione, oltre ad essere a proprio agio con la creazione di elementi utente personalizzati come richiesto, per le proprie esigenze specifiche. Il binding può essere eseguito come segue:
<TextBox x: Name = "txtInput" /> <TextBlock Text = {Binding ElementName = txtInput, Path = Text} />
Differenze tra le versioni di XAML
[modifica | modifica wikitesto]Esistono quattro principali implementazioni Microsoft di XAML:
- La versione di Windows Presentation Foundation, utilizzata per .NET Framework a partire da .NET Framework 3.0
- La versione Silverlight 3
- La versione Silverlight 4
- Il Windows 8 XAML/Jupiter versione
Queste versioni presentano alcune differenze nel comportamento di analisi[13].
Inoltre, il parser XAML di Silverlight 4 non è compatibile al 100% con le versioni precedenti dei file Silverlight 3. I file XAML accettati da Silverlight 3 potrebbero non essere accettati o vengono analizzati in modo diverso dal parser di Silverlight 4[14].
Note
[modifica | modifica wikitesto]- ^ Microsoft adds XAML to 'Open Specification' list - Software Development Times On The Web, su sdtimes.com. URL consultato il 17 aprile 2008 (archiviato dall'url originale l'11 dicembre 2008).
- ^ (EN) My First XAML Application, su www.c-sharpcorner.com. URL consultato il 7 marzo 2021.
- ^ Microsoft sostituirà all'HTML il suo XAML?, su Punto Informatico, 29 gennaio 2007. URL consultato il 4 febbraio 2019.
- ^ Rob Relyea : January 2004 - Posts Archiviato l'11 ottobre 2007 in Internet Archive.
- ^ XAML Syntax Terminology, su msdn2.microsoft.com, Microsoft Corporation.
- ^ unknown, What is BAML?, su dotnetspider.com, http://www.dotnetspider.com/, DOTNET Spider, 30 luglio 2009.«BAML means Binary Application Markup Language, which is a compiled version of the XAML. When you compile your XAML it creates the BAML file.»
- ^ MSDN forum post by the WF product manager
- ^ RuleML and BPEL are other examples of XML-based declarative logic languages
- ^ Scott Guthrie, Silverlight Tutorial Part 7: Using Control Templates to Customize a Control's Look and Feel, su weblogs.asp.net, 22 febbraio 2008. URL consultato l'8 marzo 2008.
- ^ schemas.microsoft.com, su web.archive.org, 5 luglio 2017. URL consultato il 7 marzo 2021 (archiviato dall'url originale il 5 luglio 2017).
- ^ Dario d’Elia, Microsoft 365 abbandonerà Internet Explorer 11 da agosto 2021, su Corriere della Sera, 21 agosto 2020. URL consultato il 7 marzo 2021.
- ^ Windows Presentation Foundation on the Web: Web Browser Applications - MSDN
- ^ XAML Processing Differences Between Silverlight Versions and WPF, su msdn.microsoft.com, Microsoft. URL consultato il 2 ottobre 2011.«Silverlight includes a XAML parser that is part of the Silverlight core install. Silverlight uses different XAML parsers depending on whether your application targets Silverlight 3 or Silverlight 4. The two parsers exist side-by-side in Silverlight 4 for compatibility. In some cases, the XAML parsing behavior in Silverlight differs from the parsing behavior in Windows Presentation Foundation (WPF). WPF has its own XAML parser.»
- ^ XAML Processing Differences Between Silverlight Versions, su msdn.microsoft.com, Microsoft. URL consultato il 2 ottobre 2011.
Voci correlate
[modifica | modifica wikitesto]Collegamenti esterni
[modifica | modifica wikitesto]- XAML overview, su msdn.microsoft.com.
- First Look, su mezzoblue.com. URL consultato il 21 novembre 2013 (archiviato dall'url originale l'8 marzo 2013).