Gestire risorse e stili in Windows Presentation Foundation - Seconda parte

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

Questo approccio è preferibile nella creazione di stili complessi che riutilizzano più volte un oggetto, rispetto a definire la risorsa ad esempio nel Panel contenitore, così da evitare strane dipendenze ricorsive, tra lo Style e altri elementi, che possono confondere.
Utilizzando la proprietà BaseOn possiamo inoltre creare un nuovo Style sfruttandone uno esistente.

<StackPanel>
    <StackPanel.Resources>
        <Style x:Key="BigButton">
            <Style.Resources>
                <LinearGradientBrush x:Key="YellowToRedBackground " StartPoint="0,0" EndPoint="0,1">
                    <GradientStop Color="Yellow" Offset="0.0" />
                    <GradientStop Color="Red" Offset="1" />
                </LinearGradientBrush>
                    <DropShadowBitmapEffect x:Key="ShadowEffect" Color="Black" Direction="320" ShadowDepth="5" Softness="0.2" Opacity="0.3"/>
            </Style.Resources>
            <Setter Property="Control.FontSize" Value="15"/>
            <Setter Property="Control.Width" Value="150"/>
            <Setter Property="Control.Height" Value="50"/>
            <Setter Property="Control.Foreground" Value="White"/>
            <Setter Property="Control.Background" Value="{StaticResource YellowToRedBackground }"/>
            <Setter Property="Control.Margin" Value="5"/>
            <Setter Property="Button.IsDefault" Value="True"/>
            <Setter Property="Control.BitmapEffect" Value="{StaticResource ShadowEffect}"/>
        </Style>

        <Style x:Key="SmallButton" BasedOn="{StaticResource BigButton}">
            <Setter Property="Control.Width" Value="50"/>
            <Setter Property="Control.Height" Value="30"/>
        </Style>

    </StackPanel.Resources>

    <Button Style="{StaticResource BigButton}">
    Ancora Hello World?
    </Button>

    <Button Style="{StaticResource SmallButton}">
    NO!
    </Button>

</StackPanel>

Nell'esempio lo style SmallButton sarà inizializzato con i valori definiti in precedenza dallo Style BigButton e successivamente aggiornato ed eventualmente integrato con quanto definito in SmallButton.
Possiamo utilizzare come base anche uno Style che sfrutta la proprietà TargetType, in questo caso sono necessari alcuni accorgimenti: il primo è che il nuovo style dovrà avere il solito TargetType infine la sintassi utilizzata per impostate la proprietà BasedOn cambia leggermente:

BasedOn="{StaticResource {x:Type Button}}"

La Markup Extension x:Type ci permette di recuperare il Type del Button, che viene utilizzato per creare una chiave implicita, quando utilizziamo la proprietà TargetType.

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.
federico.caselli scrive:
Gestire risorse e stili in Windows Presentation Foundation - Seconda parte

Volevo provare il codice di esempio, ma quando utilizzo BitmapEffect nella mia pagina XBAP, il browser si ferma al momento del caricamento con un ...
venerdì 6 giugno 2008

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



TUTORIALS


IN EVIDENZA
MISC