Condividi tramite


Come usare un dizionario delle risorse Application-Scope

Questo esempio illustra come definire e usare un dizionario risorse personalizzato con ambito applicazione.

Esempio

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

Se si dispone di più risorse impostate usando Resources, è invece possibile usare un dizionario risorse personalizzato per archiviare tali risorse e impostare 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 il ResourceDictionary.

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

Di seguito viene illustrato come ottenere 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}" />

Di seguito viene illustrato come 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, è necessario tenere presenti due considerazioni. In primo luogo, la chiave del dizionario è un oggetto, quindi è necessario usare esattamente la stessa istanza dell'oggetto quando si imposta e si ottiene una proprietà. Tieni presente che la chiave distingue tra maiuscole e minuscole quando si usa una stringa. In secondo luogo, il valore del dizionario è un oggetto, quindi è 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 tipi Style e DataTemplate. Questo potrebbe sovrascrivere il valore x:Key. Per garantire che la chiave x:Key venga rispettata, è necessario dichiararla prima della proprietà della chiave esplicita. Per altre informazioni, vedere Stili , DataTemplate e chiavi implicite.

Vedere anche