WPF ControlTemplate 动画板 结束事件不触发
时间: 2024-01-02 12:04:48 浏览: 155
ControlTemplate 中的动画结束事件可能不会自动触发,这可能是因为动画被停止或中断了。你可以通过添加一个 Completed 事件处理程序来手动触发动画结束事件。在 Completed 事件处理程序中,可以执行任何你需要执行的操作。
以下是一个示例代码,演示如何在 ControlTemplate 中手动触发动画结束事件:
```
<ControlTemplate ...>
<ControlTemplate.Resources>
<Storyboard x:Key="animation">
<!-- 定义动画 -->
</Storyboard>
</ControlTemplate.Resources>
<Grid>
<Button Content="Click Me" x:Name="myButton"/>
</Grid>
<ControlTemplate.Triggers>
<EventTrigger RoutedEvent="Button.Click" SourceName="myButton">
<BeginStoryboard Storyboard="{StaticResource animation}"/>
</EventTrigger>
<EventTrigger RoutedEvent="Storyboard.Completed">
<EventTrigger.Actions>
<BeginStoryboard Storyboard="{StaticResource animation}" />
</EventTrigger.Actions>
</EventTrigger>
</ControlTemplate.Triggers>
</ControlTemplate>
```
在这个示例中,我们定义了一个名为“animation”的动画,并在 Button 的 Click 事件触发时启动它。我们还定义了一个 EventTrigger,以便在动画完成时手动触发动画结束事件。注意,我们将 BeginStoryboard 动作放在了 EventTrigger.Actions 中,这是因为我们需要重新启动动画,以便在 Button 下一次被点击时再次播放动画。
阅读全文