Usare membri statici in XAML

di Cristian Civera, in Windows Presentation Foundation, XAML,

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

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

Nessuna risorsa collegata

I più letti di oggi