Il concetto di risorsa è molto semplice, qualsiasi elemento in Silverlight può essere una risorsa. L'obbiettivo è quello di rendere tali elementi riutilizzabili all'interno dell'applicazione. Le risorse sono contenute all'interno di oggetti ResourceDictionary, ovvero collezioni di tipo dizionario formate da coppie <chiave, valore> (Key, Value), dove ogni elemento è composto da un oggetto (la risorsa) e da una chiave identificativa univoca.
Tutti i controlli, più l'oggetto Application, espongono la proprietà Resources di tipo ResourceDictionary, quindi possono contenere risorse, questo permette di creare delle vere e proprie gerarchie di risorse. Per ottenere una risorsa sfruttiamo il Markup Extension StaticResource. Vediamo un esempio.
<StackPanel>
<StackPanel.Resources>
<LinearGradientBrush x:Key="myGradientBrush" StartPoint="0,0" EndPoint="1,1">
<GradientStop Color="#FF575757" />
<GradientStop Color="#FFCDCDCD" Offset="1" />
</LinearGradientBrush>
</StackPanel.Resources>
<TextBlock Text="Guida Silverlight"
Foreground="{StaticResource myGradientBrush}" />
<TextBlock Text="HTML.IT"
Foreground="{StaticResource myGradientBrush}" />
</StackPanel>
Nel precedente codice un oggetto LinearGradientBrush viene creato come risorsa all'interno dello StackPanel e successivamente applicato come Foreground per entrambi i controlli TextBlock.
Il livello di visibilità di una risorsa dipende da dove è stata definita all'interno dello XAML. Per esempio se nel precedente codice spostiamo la definizione della risorsa sotto i TextBlock, essa non sarà più visibile dai controlli, quindi a run-time sarà sollevata un'eccezione.
<StackPanel>
<TextBlock Text="Guida Silverlight"
Foreground="{StaticResource myGradientBrush}" />
<TextBlock Text="HTML.IT"
Foreground="{StaticResource myGradientBrush}" />
<StackPanel.Resources>
<LinearGradientBrush x:Key="myGradientBrush" StartPoint="0,0" EndPoint="1,1">
<GradientStop Color="#FF575757" />
<GradientStop Color="#FFCDCDCD" Offset="1" />
</LinearGradientBrush>
</StackPanel.Resources>
</StackPanel>
Le risorse possono essere definite all'interno dei controlli, a livello di applicazione oppure distribuiti in file separati.
Se vuoi aggiornamenti su .NET inserisci la tua email nel box qui sotto: