Gestire risorse e stili in Windows Presentation Foundation - Prima parte

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

E' naturalmente possibile aggiungere un oggetto alla collezione delle risorse e referenziarlo utilizzando codice procedurale, ma ciò annullerebbe del tutto la possibilità di dividere la logica dell'applicazione dalla sua presentazione.
Ogni elemento nella collezione delle risorse assume la seguente forma:

<Tipo x:Key="Key">
...
</Tipo>

Tipicamente un oggetto nella collezione delle risorse può essere referenziata utilizzando le Markup Extension che servono principalmente per impostare un valore di una proprietà di tipo complesso utilizzando la attribute syntax, senza la necessità di ricorrere alle più prolisse e verbose Object Element e property element syntax.

L'oggetto può essere referenziato in modo statico (StaticResource Markup Extension) o dinamico (DynamicResource Markup Extension). In molti casi è possibile utilizzare in modo del tutto intercambiabile una delle due Markup Extension, ma nel caso in cui sia necessario apportate modifiche ad un elemento della collezione a runtime la nostra scelta cadrà sull'utilizzo della DynamicResource, pagando però in pegno un lieve degrado delle prestazioni, in quanto il sistema dovrà tenere traccia delle modifiche apportate all'oggetto.

Riprendiamo l'esempio precedente e apportiamo le modifiche necessarie ad aggiungere un gradiente lineare tra le risorse.
Referenziamo l'oggetto utilizzando la StaticResource Markup Extension per impostare la proprietà Background dell'oggetto Button.

<StackPanel VerticalAlignment="Center" HorizontalAlignment="Center">
    <StackPanel.Resources>
        <LinearGradientBrush x:Key="YellowToRedBrush" StartPoint="0,0" EndPoint="0,1">
            <GradientStop Color="Yellow" Offset="0.0" />
            <GradientStop Color="Red" Offset="1" />
        </LinearGradientBrush>
    </StackPanel.Resources>

    <Button Background="{StaticResource YellowToRedBrush}">
        Esegui
    </Button>
</StackPanel>

Ciò rende il codice più breve e leggibile del precedente, ma cosà più importante, l'oggetto LinearGradientBrush è utilizzabile da ogni elemento contenuto nello StackPanel.

<StackPanel VerticalAlignment="Center" HorizontalAlignment="Center">
    <StackPanel.Resources>
        <LinearGradientBrush x:Key="YellowToRedBrush " StartPoint="0,0" EndPoint="0,1">
            <GradientStop Color="Yellow" Offset="0.0" />
            <GradientStop Color="Red" Offset="1" />
        </LinearGradientBrush>
    </StackPanel.Resources >

    <TextBlock Foreground="{StaticResource YellowToRedBrush}" >Hello WPF</TextBlock>

    <Button Background="{StaticResource YellowToRedBrush}">
        Hello WPF
    </Button>
    <TextBlock Foreground="{StaticResource YellowToRedBrush}" >Hello WPF</TextBlock>
</StackPanel>

La chiave che, come abbiamo già detto, deve essere univoca, può invece ripresentarsi in altre collezioni. Prendiamo ad esempio il seguente frammento di codice: abbiamo creato uno StackPanel e aggiunto una risorsa del tipo LinearGradientBrush identificata dalla chiave GradiendBackground.
In seguito abbiamo creato altri tre StackPanel, due dei quali definiscono tra le risorse un oggetto LinearGradientBrush, identificato sempre dalla chiave GradiendBackground.

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