2014-01-30 53 views
4

这是我第一次在这里问一个问题,这是一个问题,我是一个总新手,所以请忍受我在这里...如何使用DataTrigger启动故事板?

我正在开发一个WPF GUI应用程序与MVVM架构,和我的团队和我正在采取的方法是让多个视图在用户界面通过它的运动时必须“飞快地”屏幕上飞。我们面临的问题是如何在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 =“标签”属性,混合生成的地址问题我正在制作动画的用户界面的每个部分。我得到的错误是:

TargetName property cannot be set on a Style Setter 

好像不准我在这里使用的targetName属性,但我怎么回事指定动画映射到哪个UI组件?在我创建的0.5秒动画期间,我有7个UI元素正在移动并更改不透明度,所以我想象我必须有一些方法来识别它们中的每一个。

我的方法在这里没有好处,或者我只是做错了什么?我一直在阅读很多不同的文章,我不确定要做什么。看起来好像有什么类型的触发器和用户控件可以做什么严格的规则,但我不知道它们中的任何一个。

任何帮助或建议将不胜感激。

回答

1

我不是,如果你实际上可以肯定的,但如果可以,那么你就需要使用DataTrigger.EnterActions Property,施加当触发对象变得活跃

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

谢谢,我会试试看。你知道更好的方法来做到这一点吗?我接受建议。 – Ian

+0

使用['Ev​​entTrigger'类](http://msdn.microsoft.com/en-us/library/system.windows.eventtrigger(v = vs.110).aspx)。 – Sheridan

+0

我会再看一遍。谢谢你的帮助! – Ian