Procedura: utilizzare un dizionario risorse relativo all'ambito dell'applicazione
In questo esempio viene illustrato come definire e utilizzare un dizionario risorse personalizzato relativo all'ambito dell'applicazione.
Esempio
Application espone un archivio relativo all'ambito dell'applicazione per le risorse condivise: Resources. Per impostazione predefinita, la proprietà Resources viene inizializzata con un'istanza del tipo ResourceDictionary. Utilizzare questa istanza quando si ottengono e si impostano proprietà relative all'ambito dell'applicazione utilizzando Resources. Per ulteriori informazioni, vedere Procedura: ottenere e impostare le risorse dell'ambito dell'applicazione.
Se si dispone di più risorse impostate tramite la proprietà Resources, è invece possibile utilizzare un dizionario risorse personalizzato per archiviare tali risorse e impostare con esso Resources. Di seguito viene illustrato come dichiarare un dizionario risorse personalizzato utilizzando XAML.
<ResourceDictionary
xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml" >
<SolidColorBrush x:Key="StandardSolidColorBrush" Color="Blue" />
<LinearGradientBrush x:Key="StandardLinearGradientBrush" StartPoint="0.0,0.0" EndPoint="1.0,1.0">
<LinearGradientBrush.GradientStops>
<GradientStop Color="White" Offset="0" />
<GradientStop Color="Black" Offset="1" />
</LinearGradientBrush.GradientStops>
</LinearGradientBrush>
</ResourceDictionary>
Lo scambio di interi dizionari risorse tramite Resources consente di supportare temi relativi all'ambito dell'applicazione, dove ogni tema è incapsulato da un singolo dizionario risorse. Nell'esempio riportato di seguito viene illustrato come impostare l'oggetto ResourceDictionary.
<!--Set the Application ResourceDictionary-->
<Application.Resources>
<ResourceDictionary Source="MyResourceDictionary.xaml" />
</Application.Resources>
Di seguito viene illustrato come è possibile ottenere risorse relative all'ambito dell'applicazione dal dizionario risorse esposto da Resources nel codice XAML.
<!--Set the brush as a StaticResource from the ResourceDictionary-->
<Rectangle Name="Rect" Height="200" Width="100" Fill="{StaticResource ResourceKey=StandardSolidColorBrush}" />
Di seguito viene illustrato come è inoltre possibile ottenere le risorse nel codice.
'Get a resource from the ResourceDictionary in code
Dim GradientBrush As Brush = Application.Current.FindResource("StandardLinearGradientBrush")
//Get a resource from the ResourceDictionary in code
Brush gradientBrush = (Brush)Application.Current.FindResource("StandardLinearGradientBrush");
Quando si utilizza la proprietà Resources, è necessario considerare due aspetti. Innanzitutto, la chiave del dizionario è un oggetto, pertanto è necessario utilizzare esattamente la stessa istanza dell'oggetto sia quando si imposta un valore di proprietà, sia quando lo si ottiene. Si noti che la chiave rileva la differenza tra maiuscole e minuscole quando si utilizza una stringa. Secondariamente, il valore del dizionario è un oggetto, pertanto sarà necessario convertire il valore nel tipo desiderato quando si ottiene un valore di proprietà.