<ListBox.ItemTemplate>
<DataTemplate>
<Grid x:Name="grid">
<Grid.Background>
<SolidColorBrush x:Name="backgroundBrush" Color="Transparent" Opacity="0.1"/>
</Grid.Background>
</Grid>
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding IsExpanded}" Value="True">
<Setter TargetName="backgroundBrush" Property="Color" Value="Green" />
</DataTrigger>
<Trigger SourceName="grid" Property="IsMouseOver" Value="True">
<Trigger.EnterActions>
<BeginStoryboard>
<Storyboard>
<ColorAnimation Storyboard.TargetName="backgroundBrush"
Storyboard.TargetProperty="Color"
To="White" Duration="0:0:1.5"/>
</Storyboard>
</BeginStoryboard>
</Trigger.EnterActions>
<Trigger.ExitActions>
<BeginStoryboard>
<Storyboard>
<ColorAnimation Storyboard.TargetName="backgroundBrush"
Storyboard.TargetProperty="Color"
AccelerationRatio="1" Duration="0:0:1.5" />
</Storyboard>
</BeginStoryboard>
</Trigger.ExitActions>
</Trigger>
</DataTemplate.Triggers>
</DataTemplate>
</ListBox.ItemTemplate>
Non viene compilato con errore 'Impossibile trovare il trigger target' backgroundBrush '.'WPF DataTrigger non trova Trigger Target
Se rimuovo il DataTrigger verrà compilato e funzionante. Se cambio il DataTrigger per usare TargetName="grid" Property="Background"
, esso compilerà e funzionerà (ma senza l'opacità desiderata).
Dove sto andando male?
+1, buona domanda. Pensavo di aver capito WPF, ma non ho idea del perché questo non funziona ... – Heinzi
(in ritardo, ma ancora ...) Stai cambiando il valore di un colore quando dovresti avere due colori diversi (definito come risorse locali) e poi scambiare tra di loro nei setter dei trigger. Penserei che questa sia la causa del problema (anche se dovrebbe essere testato per essere sicuro). – heltonbiker