<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>
No se compila con el error 'No se puede encontrar el desencadenador target' backgroundBrush '.'WPF DataTrigger no puede encontrar Trigger Target
Si elimino el DataTrigger se compilará y funcionará. Si cambio el DataTrigger para usar TargetName="grid" Property="Background"
, se compilará y funcionará (pero sin la opacidad deseada).
¿Dónde me estoy equivocando?
+1, buena pregunta. Pensé que entendía WPF, pero no tengo idea de por qué esto no funciona ... – Heinzi
(último comentario, pero aún ...) Estás cambiando el valor de un color cuando en realidad deberías tener dos colores diferentes (definido como recursos locales) y luego intercambiarlos en los setters de los disparadores. Creo que esta es la causa del problema (aunque debe probarse para saberlo con certeza). – heltonbiker