Il processo creativo che porta alla realizzazione d'interfacce utente raffinate e accattivanti è spesso convulso e non privo di ripensamenti.
Dimensione, forma e colore di ogni elemento dell'interfaccia è spesso oggetto di prove e continui aggiustamenti. Prendiamo ad esempio il seguente frammento di codice, dove il colore di sfondo viene impostato utilizzando XAML.
<Button> Esegui <Button.Background > <LinearGradientBrush StartPoint="0,0" EndPoint="0,1"> <GradientStop Color="Yellow" Offset="0.0" /> <GradientStop Color="Red" Offset="1" /> </LinearGradientBrush> </Button.Background > </Button>
Immaginiamo di avere più pulsanti che devono condividere il solito aspetto, ma in un secondo momento decidessimo di apportare alcune modifiche al gradiente o sostituirlo addirittura con un colore solido. Poiché l'interfaccia creata in XAML è composta da testo, eseguire una ricerca e sostituire il codice con quello nuovo, potrebbe apparire come una soluzione, ma quest'approccio è sostenibile solo con progetti di piccole dimensioni e può facilmente diventare un incubo per quelli di proporzioni maggiori.
Questo tipo di problema non è nuovo nell'ambiente informatico. E' stato ed è, naturalmente ancora oggi, facilmente superabile, utilizzando dei campi costanti o statici in sola lettura i quali vengono referenziati più volte nel codice.
Utilizzo delle risorse
Il precedente approccio è tipico dei linguaggi procedurali come C#, VB o altri. Utilizzando XAML è possibile ottenere il medesimo risultato per condividere e riutilizzare un oggetto aggiungendolo alle risorse (da non confondere con le risorse compilate con l'assembly).
Le risorse sono memorizzate in un oggetto del tipo ResourceDictionary esposto dalle classi come FrameworkElement, FrameworkContentElemet (dalle quali deriva ogni componente dell'interfaccia di WPF) e Application per mezzo di una proprietà chiamata Resources. Ogni elemento inserito nella collezione Resources deve essere identificato da una chiave univoca che nella sintassi dichiarativa di XAML è definita con l'attributo x:Key.
Come dicevamo, ogni oggetto che deriva da FrameworkElement o FrameworkContentElement espone la proprietà Resources del tipo ResourcesDictionary, creata in XAML utilizzando la property element syntax.
<StackPanel.Resources> ... </StackPanel.Resources>
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.