![](/img/trans.png)
[英]GridSplitter overrides ColumnDefinition's style trigger?
[英]WPF Trigger / Style overrides another
我有一个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
突出显示该行。 真好
我在ListViewItem
上也有一个DataTrigger
:
<Style.Triggers>
<DataTrigger Binding="{Binding IsTestTrue}" Value="True">
<DataTrigger.EnterActions>
<BeginStoryboard Storyboard="{StaticResource SomeFunkyAnimation}" />
</DataTrigger.EnterActions>
</DataTrigger>
如果测试为真,则播放一个很好的淡入淡出动画。 除了当我将鼠标移到“ test is true”的行上时,动画都会停止并且显示鼠标悬停样式,所有这些工作都可以。
有什么想法可以在DataTrigger
覆盖该样式吗?
TIA
更新:
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
动画。
在花了几个小时解决这个问题之后,我终于找到了解决方法。 由于某些原因,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和一个附加的Setter作为背景:
<DataTrigger Binding="{Binding IsTestTrue}" Value="True">
<DataTrigger.EnterActions>
<BeginStoryboard Storyboard="{StaticResource SomeFunkyAnimation}" />
</DataTrigger.EnterActions>
<Setter Property="Background" Value="Red" />
</DataTrigger>
终于和平了。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.