2013-02-20 105 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(); */ } 
}