WPF Trigger / Style переопределяет другой
У меня есть ListView
с ItemContainerStyle
определяется как таковой:
<ListView Width="auto"
SelectionMode="Single"
ItemContainerStyle="{StaticResource ItemContStyle}"
....
Затем в baseListViewStyle
Я определил некоторые базовые стили для применения к ListView
с, в том числе Style
спусковой крючок:
<Style x:Key="baseListViewStyle" TargetType="ListViewItem">
<Setter Property="Height" Value="20" />
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Foreground" Value="Red" />
</Trigger>
</Style.Triggers>
</Style>
Trigger
здесь выделяется строка, когда мышь находится над ней. Ницца.
у меня тоже есть DataTrigger
на ListViewItem
:
<Style.Triggers>
<DataTrigger Binding="{Binding IsTestTrue}" Value="True">
<DataTrigger.EnterActions>
<BeginStoryboard Storyboard="{StaticResource SomeFunkyAnimation}" />
</DataTrigger.EnterActions>
</DataTrigger>
Если проверка верна, то проигрывается приятная небольшая анимация затухания. Это все работает за исключением того, что когда я наведу курсор мыши на строку, в которой "test is true", анимация останавливается и отображается стиль наведения мыши.
Любые идеи, как я могу переопределить этот стиль в моем DataTrigger
?
ТИА
Обновить:
SomeFunkyAnimation
оживляет цвет фона. XAML для этого здесь:
<Style x:Key="ItemContStyle" TargetType="{x:Type ListViewItem}" BasedOn="{StaticResource baseListViewStyle}">
<Style.Resources>
<Storyboard x:Key="SomeFunkyAnimation" FillBehavior="Stop">
<ColorAnimation Storyboard.TargetProperty="Background.Color" RepeatBehavior="Forever" From="Red" To="Pink" Duration="0:0:3"/>
</Storyboard>
</Style.Resources>
MouseOver
триггер определяется в baseListViewStyle
, DataTrigger
определяется в ItemContStyle
,
Я пытался удалить MouseOver
триггер стиль, но это не сработало, как я считаю, Listview
имеет значение по умолчанию MouseOver
стиль уже определен, поэтому он отменяет мой DataTrigger
анимация.
1 ответ
Через несколько часов моей жизни я решил эту проблему. По какой-то причине ColorAnimation просто прекращает анимацию после наведения мыши. Не знаю почему, может быть, ошибка wpf, кто знает. Решение было перенастроить мою анимацию. Ниже делает то же самое:
<Storyboard x:Key="SomeFunkyAnimation" FillBehavior="Stop">
<DoubleAnimation Storyboard.TargetProperty="Background.Opacity" RepeatBehavior="Forever" AutoReverse="true" From="0.2" To="1.0" Duration="0:0:1"/>
</Storyboard>
А затем тот же DataTrigger с дополнительным сеттером для фона:
<DataTrigger Binding="{Binding IsTestTrue}" Value="True">
<DataTrigger.EnterActions>
<BeginStoryboard Storyboard="{StaticResource SomeFunkyAnimation}" />
</DataTrigger.EnterActions>
<Setter Property="Background" Value="Red" />
</DataTrigger>
Мир наконец.