如何使用DataTrigger启动故事板?

时间:2014-01-30 22:48:06

标签: wpf xaml animation mvvm storyboard

这是我第一次在这里问一个问题,这是关于一个主题我是一个新手,所以请在这里忍受我......

我正在使用MVVM架构开发一个WPF GUI应用程序,我和我的团队正在采取的方法是在UI通过它的动作时,必须有多个视图,这些视图必须在屏幕上“飞行”和“关闭”。我们面临的问题是如何在UI从一个视图转换到另一个视图时运行动画。我的主视图上有一个按钮,按下后会改变一个属性,让一个视图知道它需要离开,我一直试图绑定到动画的开头。我有定时器设置,将延迟我的故事板动画的持续时间视图更改,但我无法让我的动画运行!在XAML中,我将我的故事板(在Blend中生成)设置在DataTrigger中,如下所示:

<UserControl.Style>
   <Style>
      <Style.Triggers>
         <DataTrigger Binding="{Binding StandbyViewModel.LeavingStandbyView}" Value="true">
            <BeginStoryboard>
               <Storyboard>
                  <DoubleAnimationUsingKeyFrames ...> // I've got 22 of these statements in my storyboard

我在DoubleAnimationUsingKeyFrames行上遇到问题,其中混合生成的Storyboard.TargetName =“label”属性解决了我动画的UI的每个部分。我得到的错误是:

TargetName property cannot be set on a Style Setter

似乎我不允许在这里使用TargetName属性,但是如何指定哪个动画映射到哪个UI组件?在我创建的0.5秒动画中,我有7个UI元素,我正在移动并改变不透明度,所以我想我必须有一些方法来识别它们中的每一个。

我的方法在这里不好,还是我做错了什么?我一直在阅读很多不同的帖子,我不知道该怎么做。对于什么类型的触发器和UserControls可以做什么似乎有严格的规则,但我不知道它们中的任何一个。

非常感谢任何帮助或建议。

1 个答案:

答案 0 :(得分:3)

我不确定你是否可以,但如果你可以,那么你需要使用DataTrigger.EnterActions Property,当触发对象变为时活性

<UserControl.Style>
   <Style>
      <Style.Triggers>
         <DataTrigger Binding="{Binding StandbyViewModel.LeavingStandbyView}" Value="true">
             <DataTrigger.EnterActions>
                <BeginStoryboard>
                   <Storyboard>
                      <DoubleAnimationUsingKeyFrames ...> 
相关问题