Gestire risorse e stili in Windows Presentation Foundation - Prima parte

5 pagine in totale: <<Indietro 1 2 3 [4] 5 Avanti >>

Niente di nuovo, ma cosa accade provando a utilizzarlo una seconda volta?

<StackPanel>
    <StackPanel.Resources>
        <Button x:Key="myResourcesButton">
        Esegui
        </Button>
    </StackPanel.Resources >

    <StackPanel>
        <StaticResource ResourceKey="myResourcesButton"/>
    </StackPanel>

    <StackPanel>
        <StaticResource ResourceKey="myResourcesButton"/>
    </StackPanel>

</StackPanel>

Il runtime sollevata un'eccezione, poiché l'oggetto Button deriva da Visual è non può essere figlio di due Visual differenti.
Questo comportamento può essere alterato impostando l'attributo x:Shared su false, cosi facendo per ogni nuovo riferimento viene generata una nuova istanza.

<StackPanel>
    <StackPanel.Resources>
        <Button x:Key="myResourcesButton" x:Shared="False">
        Esegui
        </Button>
    </StackPanel.Resources>

    <StackPanel>
        <StaticResource ResourceKey="myResourcesButton"/>
    </StackPanel>
    <StackPanel>
        <StaticResource ResourceKey="myResourcesButton"/>
    </StackPanel>

</StackPanel>

Al fine di migliorare la riusabilità delle risorse tra più progetti è possibile creare uno o più file separati. Ad esempio creiamo un nuovo file chiamato GradientDictionary.xaml.
Come nodo principale questo file dovrà avere l'elemento ResourceDictionary nel quale possiamo inserire, come abbiamo già fatto, uno o più oggetti.

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

    <LinearGradientBrush x:Key="YellowToRedBackground " StartPoint="0,0" EndPoint="0,1">
        <GradientStop Color="Yellow" Offset="0.0" />
        <GradientStop Color="Red" Offset="1" />
    </LinearGradientBrush>

    <LinearGradientBrush x:Key="WhiteToRedBackground " StartPoint="0,0" EndPoint="0,1">
        <GradientStop Color="White" Offset="0.0" />
        <GradientStop Color="Red" Offset="1" />
    </LinearGradientBrush>

</ResourceDictionary>

Per utilizzare il file di risorse è sufficiente modificare la sezione Resources dello StackPanel aggiungendo l'elemento ResourceDictionary e l'attributo Source al fine di specificare per quest'ultimo il percorso del file sotto forma di uniform resource identifier (URI).

<StackPanel VerticalAlignment="Center" HorizontalAlignment="Center">

    <StackPanel.Resources>
        <ResourceDictionary Source="GradientDictionary.xaml"/>
    </StackPanel.Resources>

    <Button Background="{StaticResource WhiteToRedBackground}">
    Esegui
    </Button>

</StackPanel>

5 pagine in totale: <<Indietro 1 2 3 [4] 5 Avanti >>

Contenuti dell'articolo

Commenti
Dai un voto a questo articolo, ci aiuterà a migliorare il nostro sito (1 è il voto minimo, 5 il massimo).

Per procedere al rating dell'articolo devi essere autenticato.

Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.



TUTORIALS


IN EVIDENZA
MISC