这是我第一次在这里问一个问题,这是关于一个主题我是一个新手,所以请在这里忍受我......
我正在使用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可以做什么似乎有严格的规则,但我不知道它们中的任何一个。
非常感谢任何帮助或建议。
答案 0 :(得分:3)
我不确定你是否可以,但如果你可以,那么你需要使用DataTrigger.EnterActions
Property,当触发对象变为时活性:
<UserControl.Style>
<Style>
<Style.Triggers>
<DataTrigger Binding="{Binding StandbyViewModel.LeavingStandbyView}" Value="true">
<DataTrigger.EnterActions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimationUsingKeyFrames ...>