Gestire risorse e stili in Windows Presentation Foundation - Seconda parte

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

Altra importante caratteristica dell'oggetto Style è poter impostare alcune proprietà solo al verificarsi di determinati eventi, contrariamente a quanto accadde con i Setters , al cessare di tali condizioni vengono ripristinati i valori originali, tutto questo grazie ai Triggers.
Esistono tre tipi di Triggers: i Property Triggers che scattano quando una dependecy propriety assume un determinato valore; i Data Triggers utilizzabili su tutte le proprietà e gli Event Triggers richiamati quando si verifica un evento specifico, ma che non sono trattati in questo articolo in quanto principalmente usati per le animazioni.

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

        <Style TargetType="TextBox">

            <Setter Property="Width" Value="100"/>

            <Style.Triggers>
                <Trigger Property="IsFocused" Value="True">
                    <Setter Property="Background" Value="Gray"/>
                </Trigger>
            </Style.Triggers>
        </Style>

    </StackPanel.Resources>

    <TextBox/>
    <TextBox/>
    <TextBox/>

</StackPanel>

Nel precedente esempio impostiamo un property Trigger che scatta solamante quanto la TextBox riceve il focus, impostando così il colore di sfondo a grigio.
Per far scattare un trigger quando una proprietà (non solo una DependecyProperty) assume un determinato valore è possibile utilizzare il DataTrigger.

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

        <Style TargetType="{x:Type Button}">
            <Setter Property="TextBox.Width" Value="150"/>
            <Setter Property="TextBox.IsEnabled" Value="False"/>

            <Style.Triggers>

                <DataTrigger Binding="{Binding ElementName=ControlTextBox, Path=Text}" Value="XBOX 360" >
                    <Setter Property="Control.IsEnabled" Value="True"/>
                </DataTrigger>

            </Style.Triggers>
        </Style>

    </StackPanel.Resources>

    <TextBox x:Name="ControlTextBox"/>

    <Button >Prosegui</Button>

</StackPanel>

Nel codice precedente il bottone viene abilitato solamente quando la proprietà Text della TextBox, che non è una DependcyProperty, assumera il valore "XBOX 360".
È possibile ottenere una sorta di OR specificando più Trigger. Nel successivo esempio lo sfondo delle TextBox diventa rosso sia al passaggio del mouse, sia quando riceve il focus della tastiera.

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

        <Style TargetType="TextBox">

            <Setter Property="Width" Value="100"/>

            <Style.Triggers>
                <Trigger Property="IsMouseOver" Value="True">
                    <Setter Property="Background" Value="Red"/>
                </Trigger>
                <Trigger Property="IsKeyboardFocused" Value="True">
                    <Setter Property="Background" Value="Red"/>
                </Trigger>
            </Style.Triggers>
        </Style>

    </StackPanel.Resources>

    <TextBox/>
    <TextBox/>
    <TextBox/>

</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.
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