2010-05-18 54 views
1

我有一个ListView定义为这样一个ItemContainerStyleWPF触发/样式替代另一个

      <ListView Width="auto" 
           SelectionMode="Single" 
           ItemContainerStyle="{StaticResource ItemContStyle}" 
           .... 

然后在baseListViewStyle,我已经定义了一些基本样式应用到我的ListView S,包括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此处突出显示鼠标悬停时的行。尼斯。

我也有一个DataTriggerListViewItem

   <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定义。在ItemContStyle中定义了DataTrigger

我试图消除MouseOver风格触发,但我相信Listview已经定义了,因此我将覆盖动漫DataTrigger默认MouseOver风格,没有工作。

+0

你的*时髦的动画*动画是什么? “前景”属性呢?你的'DataTrigger'定义在哪里?在默认的'ListViewItem'风格,还是它的本地风格?更重要的是:IsMouseOver触发器和DataTrigger是否在*相同*风格中定义? – gehho 2010-05-18 07:07:53

+0

gehho ...感谢您的期待。原始问题的答案。 – ozczecho 2010-05-18 07:33:26

+0

嗯,我没有看到错误。抱歉... – gehho 2010-05-18 12:05:08

回答

0

好了,在这个问题上放了几个小时后,我终于找到了解决办法。出于某种原因,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> 

和平最后。