【发布时间】:2014-02-23 11:58:26
【问题描述】:
这是我第一次在这里提出问题,而且是关于一个我完全是新手的主题,所以请在这里耐心等待......
我正在开发一个采用 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 行中遇到问题,该行使用 Blend 生成的 Storyboard.TargetName="label" 属性来处理我正在制作动画的 UI 的每个部分。我得到的错误是:
TargetName property cannot be set on a Style Setter
似乎不允许我在这里使用 TargetName 属性,但我还能如何指定哪些动画映射到哪个 UI 组件?在我创建的 0.5 秒动画期间,我有 7 个 UI 元素正在移动并更改不透明度,所以我想我必须有一些方法来识别它们中的每一个。
我这里的方法不好,还是我做错了什么?我一直在阅读很多关于此的不同帖子,但我不确定该怎么做。似乎对触发器和用户控件可以做什么类型有严格的规定,但我不知道其中任何一个。
任何帮助或建议将不胜感激。
【问题讨论】:
标签: wpf xaml animation mvvm storyboard