<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>
Не компилируется с ошибкой «Невозможно найти триггерную цель» backgroundBrush '.'WPF DataTrigger не найден Trigger Target
Если я удалю DataTrigger, он скомпилируется и работает. Если я изменил DataTrigger на использование TargetName="grid" Property="Background"
, он будет компилироваться и работать (но без желаемой непрозрачности).
Куда я иду не так?
+1, хороший вопрос. Я думал, что понял WPF, но я не знаю, почему это не работает ... – Heinzi
(поздний комментарий, но все же ...) Вы меняете значение цвета, когда на самом деле у вас должно быть два разных цвета (определенные как локальные ресурсы), а затем поменяйте их между собой в установщиках триггеров. Я думаю, что это причина проблемы (хотя ее нужно проверить, чтобы точно знать). – heltonbiker