WPF动画在ControlTemplate中完成事件

时间:2009-11-06 02:42:40

标签: wpf events animation controltemplate

在我的WPF应用程序中,我有标准的Generic.xaml文件,其中包含我的自定义类的样式, Frost

我需要找到一种方法将其中一个动画的Completed事件连接到我的自定义 Frost 类,我不能在运行时这样做,因为它向我抱怨我需要设置IsFrozen为了我不想做的假(因为表现)。

如何将事件连接到控件模板的TargetType?

    <Style TargetType="{x:Type Controls:Frost}">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type Controls:Frost}">
                    <ControlTemplate.Resources>
                        <Storyboard x:Key="OnEndFrost">
                            <DoubleAnimation Name="fadeOutFrostAnimation"
                                             BeginTime="00:00:00" 
                                             Duration="00:00:02"
                                             Storyboard.TargetName="frostElement" 
                                             Storyboard.TargetProperty="(UIElement.Opacity)"
                                             To="0">
                            </DoubleAnimation>
                        </Storyboard>
                    </ControlTemplate.Resources>
                    <Grid>
                        <MediaElement x:Name="frostElement" 
                                     LoadedBehavior="Manual"
                                     Width="1172" 
                                     Height="286.917" 
                                     Source="{TemplateBinding SourceUri}"
                                     ScrubbingEnabled="True">
                            <MediaElement.Effect>
                                <eff:ChromaKeyAlphaEffect InputColor="#FF0E425E" Tolerance="0.1" />
                            </MediaElement.Effect>
                        </MediaElement>
                    </Grid>
                    <ControlTemplate.Triggers>
                        <EventTrigger RoutedEvent="Controls:Frost.EndFrost">
                            <BeginStoryboard x:Name="OnEndFrost_BeginStoryboard" Storyboard="{StaticResource OnEndFrost}"/>
                        </EventTrigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

1 个答案:

答案 0 :(得分:0)

您可以创建自定义动画并向其添加事件处理程序或使用命令作为依赖项属性。有关自定义动画的代码项目示例,请查看this link