【发布时间】:2014-11-08 21:42:20
【问题描述】:
我在 Resource-XAML(不透明度和渲染转换)中定义了一个故事板。现在我想在我不同的用户控件上使用它。由于这是一个淡入动画,因此在动画结束后开始用户控件的逻辑至关重要。 所以我知道情节提要的“已完成”事件,但我看不到如何在此处应用,因为我需要在使用动画的 UserControl 上定义 Eventhandler。 (有几个用户控件,每个用户控件在加载后都有自己的操作......)
样式有一个名为“BasedOn”的属性,在这里我可以定义父级...故事板对象也有类似的东西,还是我必须重新设计我的代码? 无论如何,如果有比通过 Resourcedictionary 更好地在项目中使用标准动画的方法,请告诉我。 提前致谢, 丹尼尔
编辑:
这里有部分resdic。
<Storyboard x:Key="ShowAndGrow">
<DoubleAnimation Duration="0:0:0.3"
Storyboard.TargetProperty="RenderTransform.ScaleX"
To="1" />
<DoubleAnimation Duration="0:0:0.3"
Storyboard.TargetProperty="RenderTransform.ScaleY"
To="1" />
<DoubleAnimation Duration="0:0:0.1"
Storyboard.TargetProperty="Opacity"
To="1" />
</Storyboard>
我在用户控件中应用它
<UserControl.Triggers>
<EventTrigger RoutedEvent="FrameworkElement.Loaded">
<BeginStoryboard Storyboard="{StaticResource ShowAndGrow}">
</BeginStoryboard>
</EventTrigger>
</UserControl.Triggers>
这里我需要以某种方式添加已完成的事件....
【问题讨论】:
-
在您的情况下,无法在代码隐藏而不是资源 XAML 中添加完成的事件?
-
是否可以提供 XAML 示例和/或后面的适用代码,以便我们可以看到您已经拥有的内容? (例如 - 你在后面的代码中是否引用了动画?你是否使用 MVVM 方法 - 即当故事板在视图或视图模型中完成时将运行代码?)
-
使用 WPF 时,经常会出现某些代码重复的情况,就像在这种情况下一样。但是,您可以将
Storyboard存储在Resources部分中,并以编程方式更改所有Storyboard.TargetProperty值和Completed事件处理程序。当然,如果您这样做了,那么您还必须以编程方式将其连接到每个UserControl的Loaded事件,因为单独使用 XAML 是行不通的。 -
@Core-One:完全有可能,我只是想使用基础动画作为模板
-
@DavidEdey:我是 WPF 的新手,所以我不能告诉你我是否使用任何模式。 :) 当然我尝试拆分 UI 和业务逻辑... :)
标签: wpf xaml animation storyboard resourcedictionary