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>Contenuti dell'articolo
- Pagina 1
- Pagina 5
Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.





Difficoltà
Stampa
Download 


10annidi.ASPItalia.com: iscriviti alla competizione e vinci fantastici premi ogni mese!

Volevo provare il codice di esempio, ma quando utilizzo BitmapEffect nella mia pagina XBAP, il browser si ferma al momento del caricamento con un ...
Continua »»» | Rispondi »»»