XAML è la nuova sintassi introdotta nel .NET Framework 3.0 per definire le interfacce grafiche nelle applicazioni sviluppate con Windows Presentation Foundation. In linea generale, si tratta di un linguaggio alternativo ai normali C#, VB.NET ecc che permette di istanziare classi e di impostare proprietà in modo semplice o complesso. Oltre a questo, XAML permette di usare delle markup extension: estensioni particolari che consentono di ottenere tipi complessi o di impostare proprietà in modo più rapido.
Le markup extension sono classi che ereditano da System.Windows.Markup.MarkupExtension e, mediante proprietà che possono definire, forniscono informazioni a runtime. Tra quelle disponibili la StaticExtension permette di accedere ad un membro statico di una classe o ad un tipo enumerato e di ottenere qualsiasi suo valore.
Le markup extension si utilizzano mediante la sintassi {NomeExtension Proprietà1=1,Proprietà2=2,..}. Può essere omesso il suffisso extension del nome della classe e se quest'ultima possiede un costruttore con un parametro è possibile non indicare il nome della proprietà: {NomeExtension valore1}.
Di seguito un esempio che recupera l'oggetto Brush di sistema da associare al colore di un testo:
<TextBlock Foreground="{x:Static SystemColors.ControlTextBrush}" Text="ControlTextBrush" />
Se il tipo appartiene ad assembly personalizzati o diversi da quelli standard è possibile mappare il namespace come spiegato negli script #1 o #2. L'esempio seguente mostra l'ora attuale utilizzando DateTime.Now:
<Label Content="{x:Static s:DateTime.Now}" />
Le StaticExtension vengono solitamente utili per recuperare le chiavi di style utilizzate dai controlli oppure per caricare colori in modo dinamico dalle risorse.
<TextBlock Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" Text="ControlTextBrush" />
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
I più letti di oggi
- prenota subito i nostri nuovi libri su #aspnet45, #aspnetmvc 4, #csharp5, #vb2012, #vs2012: https://aspit.co/ad1 15% di sconto @Hoepli_1870
- #Windows10 e #UWP: non perdere il 15/12 il nostro streaming gratuito #aspilive https://aspit.co/Win10-Live
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- Impostare una policy di retry con Polly e IHttpClientFactory in #aspnetcore2.1 https://aspit.co/bpm di @GentiliMoreno #webapi #aspnetcore1
- Gestire il warmup di una web app #azure in bilanciamento di carico https://aspit.co/bqo di @CristianCivera
- Gestire la documentazione di più versioni della stessa API su #aspnetcore2.1 https://aspit.co/bqs di @crad77 #webapi
- Web UI interattive con #blazor Server https://aspit.co/bw9 di @GentiliMoreno #aspnetcore3 #netcore3
- Use Firebase in #PWA https://aspit.co/b2g
- Testare le impostazioni CORS di un'applicazione #aspnetcore https://aspit.co/b4p di @crad77 #webapi
- @scottgu mostra come creare app per #wp7 a #pdc10 http://u.aspitalia.com/n3