首页 文章

如何使用DataTrigger启动故事板?

提问于
浏览
4

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

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

<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 回答

  • 2

    我不确定你是否可以,但如果可以,那么你需要使用DataTrigger.EnterActions Property,它在触发器对象变为活动状态时应用:

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

相关问题