从事件中检索情节提要

本文关键字:检索 事件 | 更新日期: 2023-09-27 18:00:13

我在XAML中定义了一个通用Storyboard,如下所示:

<Storyboard Core:Key="GenericAnimation" Completed="OnStoryboardCompleted"/>

在我的代码后面如下:

m_GenericAnimation = (Storyboard)Resources["GenericAnimation"];

我的应用程序中的每个Storyboard共享相同的Completed事件OnStoryboardCompleted。我想根据刚刚完成的动画稍微改变一下我的事件行为,如下(伪代码):

private void OnStoryboardCompleted(object sender, EventArgs e)
{
    if (completedStoryboard == m_GenericAnimation)
        DoSomethingSpecific();
    DoSomethingCommon();
}

如何从发件人处检索当前已完成的Storyboard?如何正确比较两个Storyboard对象?

从事件中检索情节提要

您可以在Storyboard:上使用Name属性

<Storyboard x:Key="Storyboard1" Name="Storyboard1_Name">
    <!-- ... -->
</Storyboard>
<Storyboard x:Key="Storyboard2" Name="Storyboard2_Name">
    <!-- ... -->
</Storyboard>

然后:

Storyboard sb1, sb2;
public MainWindow()
{
    InitializeComponent();
    sb1 = (Storyboard)Resources["Storyboard1"];
    sb2 = (Storyboard)Resources["Storyboard2"];
    sb1.Completed += storyboard_Completed;
    sb2.Completed += storyboard_Completed;
}
void storyboard_Completed(object sender, EventArgs e)
{
    string StoryBoardName = ((ClockGroup)sender).Timeline.Name;
    if (StoryBoardName == "Storyboard1_Name") { /* DoSomething(); */ }
    if (StoryBoardName == "Storyboard2_Name") { /* DoSomething(); */ }
}