2013-08-26 36 views
1

下面的风格触发工作正常,并在我的控制消失时,我使其可见:多个样式触发器不工作

<UserControl.Style> 
    <Style> 
     <Style.Triggers> 
      <Trigger Property="FrameworkElement.Visibility" Value="Visible"> 
       <Trigger.EnterActions> 
        <BeginStoryboard> 
         <Storyboard> 
          <DoubleAnimation Storyboard.TargetProperty="Opacity" From="0.0" To="1.0" Duration="0:0:1.4"/> 
         </Storyboard> 
        </BeginStoryboard> 
       </Trigger.EnterActions> 
      </Trigger> 
     </Style.Triggers> 
    </Style> 
</UserControl.Style> 

现在我添加一个触发我的风格让它淡出时,我使其不可见:

<Trigger Property="FrameworkElement.Visibility" Value="Hidden"> 
    <Trigger.EnterActions> 
     <BeginStoryboard> 
      <Storyboard> 
       <DoubleAnimation Storyboard.TargetProperty="Opacity" From="1.0" To="0.0" Duration="0:0:1.4"/> 
      </Storyboard> 
     </BeginStoryboard> 
    </Trigger.EnterActions> 
</Trigger> 

但是这不起作用,甚至破坏了第一个触发器的行为。我错过了什么?

+1

你是什么意思,它不工作?你是否期望看到控制器在你不可见时淡出,如果你不能看到它,它就不会消失。这里有一些很好的解决方法:http://stackoverflow.com/questions/1013817/wpf-fade-animation –

+0

@ sa_ddam213:感谢您的链接。我正在尝试诺克的方法,但不能真正使它工作。我在哪里添加这种风格,以及依赖属性去哪里? – dotNET

+0

这是用于特定控件还是用于所有控件? –

回答

0

您已收到的评论很好地回答了这个问题。但是,如果你仍然有它的实施问题,您可以使用

This sample download这是相当多的,如图here

  • 在这个例子中,MainWindow主机的确切实施UserControlVisibility可通过从MainWindow开始的Button切换,其反过来使用UserControl的IsOpen DP来给出淡入/淡出效果。

提到的Style针对UserControl并添加DP的用户控件后,指定,你很可能使用IsOpen属性来切换可见xith淡入/淡出今后。

+0

这非常有帮助。我能够进一步完成您的工作,并将“淡出”动画设置为“同步”,因为将“IsOpen”设置为“false”将停止代码移至下一行,直至淡出完成。万分感谢。 – dotNET