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>