Procedura: utilizzare un dizionario risorse relativo all'ambito dell'applicazione

Questo esempio illustra come definire e usare un dizionario risorse personalizzato dell'ambito di un'applicazione.

Esempio

Application espone un archivio dell'ambito applicazione per le risorse condivise: Resources. Per impostazione predefinita, la Resources proprietà viene inizializzata con un'istanza del ResourceDictionary tipo . Questa istanza viene usata quando si ottengono e si impostano le proprietà dell'ambito applicazione usando Resources. Per altre informazioni, vedere Procedura: Ottenere e impostare una risorsa di ambito applicazione.

Se si dispone di più risorse impostate usando Resources, è invece possibile usare un dizionario risorse personalizzato per archiviare tali risorse e impostarlo Resources con esso. Di seguito viene illustrato come dichiarare un dizionario risorse personalizzato usando XAML.

<ResourceDictionary 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://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 di risorse tramite Resources consente di supportare i temi dell'ambito applicazione, in cui ogni tema è incapsulato da un singolo dizionario risorse. Nell'esempio seguente viene illustrato come impostare ResourceDictionary.

<!--Set the Application ResourceDictionary-->
<Application.Resources>
    <ResourceDictionary Source="MyResourceDictionary.xaml" />
</Application.Resources>

Di seguito viene illustrato come ottenere le risorse dell'ambito dell'applicazione dal dizionario risorse esposto da Resources in XAML.

<!--Set the brush as a StaticResource from the ResourceDictionary-->
<Rectangle Name="Rect" Height="200" Width="100" Fill="{StaticResource ResourceKey=StandardSolidColorBrush}" />

L'esempio seguente illustra come è possibile ottenere anche le risorse nel codice.

//Get a resource from the ResourceDictionary in code
Brush gradientBrush = (Brush)Application.Current.FindResource("StandardLinearGradientBrush");
'Get a resource from the ResourceDictionary in code
Dim GradientBrush As Brush = Application.Current.FindResource("StandardLinearGradientBrush")

Quando si usa Resources. Innanzitutto, la chiave del dizionario è un oggetto, pertanto è necessario usare esattamente la stessa istanza di oggetto quando si imposta e ottiene un valore di proprietà Si noti che la chiave fa distinzione tra maiuscole e minuscole quando si usa una stringa. In secondo luogo, il valore del dizionario è un oggetto, quindi sarà necessario convertire il valore nel tipo desiderato quando si ottiene un valore della proprietà.

Alcuni tipi di risorse possono usare automaticamente una proprietà definita dal tipo come chiave esplicita, ad esempio i Style tipi e DataTemplate . Questo può sostituire il x:Key valore. Per garantire che la x:Key chiave venga rispettata, dichiararla prima della proprietà della chiave esplicita. Per altre informazioni, vedere Stili, DataTemplate e chiavi implicite.

Vedi anche