2013-02-20 102 views
0

我在XAML中定义一个通用Storyboard如下:检索故事板从事件

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

在我的代码隐藏如下:

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

每次我的应用程序共享同一StoryboardCompleted事件OnStoryboardCompleted。我想改变一点点取决于动漫我的事件,这只是正在完成像这样(伪)的行为:

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

    DoSomethingCommon(); 
} 

我怎样才能检索当前完成Storyboard从发送者?我如何正确比较两个Storyboard对象?

回答

1

可以使用Name属性上Storyboard

<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(); */ } 
}