WPF触发器/样式覆盖另一个

WPF触发器/样式覆盖另一个,wpf,xaml,triggers,styles,datatrigger,Wpf,Xaml,Triggers,Styles,Datatrigger,我有一个列表视图,其中定义了一个ItemContainerStyle: <ListView Width="auto" SelectionMode="Single" ItemContainerStyle="{StaticResource ItemContStyle}"

我有一个
列表视图
,其中定义了一个
ItemContainerStyle

                            <ListView Width="auto" 
                              SelectionMode="Single"
                              ItemContainerStyle="{StaticResource ItemContStyle}"
                               .... 
当鼠标位于行上方时,此处的
触发器将高亮显示该行。很好

我在
列表视图项
上还有一个
数据触发器

                <Style.Triggers>
                <DataTrigger Binding="{Binding IsTestTrue}" Value="True">
                    <DataTrigger.EnterActions>
                        <BeginStoryboard Storyboard="{StaticResource SomeFunkyAnimation}" />
                    </DataTrigger.EnterActions>
                </DataTrigger>
MouseOver
触发器在
baseListViewStyle
中定义。
DataTrigger
ItemContStyle
中定义


我试图删除
MouseOver
样式的触发器,但没有成功,因为我相信
Listview
已经定义了默认的
MouseOver
样式,所以它覆盖了我的
DataTrigger
动画。

在我放弃了几个小时的生活后,我终于找到了解决方法。由于某些原因,彩色动画只是在鼠标悬停后停止动画。不知道为什么,也许是一个wpf bug谁知道。解决办法是重新调整我的动画。下面的操作与此相同:

                    <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和一个附加的Setter作为后台:

                <DataTrigger Binding="{Binding IsTestTrue}" Value="True">
                    <DataTrigger.EnterActions>
                        <BeginStoryboard Storyboard="{StaticResource SomeFunkyAnimation}" />
                    </DataTrigger.EnterActions>
                    <Setter Property="Background" Value="Red" />
                </DataTrigger>


终于和平了。

你的时髦动画是什么动画?
前台
属性也是吗?您的
DataTrigger
在哪里定义?在默认的
ListViewItem
样式中,还是本地样式?更重要的是:
IsMouseOver
触发器和
DataTrigger
定义的样式是否相同?gehho…感谢您的关注。原来问题的答案。嗯,我看不出有什么错误。很抱歉
                    <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 Binding="{Binding IsTestTrue}" Value="True">
                    <DataTrigger.EnterActions>
                        <BeginStoryboard Storyboard="{StaticResource SomeFunkyAnimation}" />
                    </DataTrigger.EnterActions>
                    <Setter Property="Background" Value="Red" />
                </DataTrigger>