从事件中检索情节提要
本文关键字:检索 事件 | 更新日期: 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(); */ }
}