0

XAMLで次のようにジェネリックをStoryboard定義しています。

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

そして私のコードでは-次のように後ろに:

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

私のアプリケーションはすべて同じイベントStoryboardを共有しています。このように完成したばかりのアニメーションに応じて、イベントの動作を少し変更したいと思います(擬似コード):CompletedOnStoryboardCompleted

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

    DoSomethingCommon();
}

Storyboard現在完了しているものを送信者から取得するにはどうすればよいですか?Storyboard2つのオブジェクトを正しく比較するにはどうすればよいですか?

4

1 に答える 1

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(); */ }
}
于 2013-02-20T16:04:20.233 に答える