Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial
  • Lezione 46 di 59
  • livello principiante
Indice lezioni

Resource: il concetto di 'Risorsa'

Gli oggetti come risorse dell'applicazione da poter riutilizzare facilmente
Gli oggetti come risorse dell'applicazione da poter riutilizzare facilmente
Link copiato negli appunti

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.

Ti consigliamo anche