3

誰かが私が比較的簡単な問題だと思ったことを手伝ってくれることを願っています。

DoubleAnimationオブジェクトを使用してコードでフェードアウトアニメーションを設定しています。画像がフェードアウトし、完了するとCompletedイベントが発生します。

フェードアウトアニメーションが適用されたコントロールの名前をイベントハンドラー内から取得したいのですが、方法が見つかりません。

助けていただければ幸いです。ありがとう。

DispatcherTimer timer = new DispatcherTimer();

public MainWindow()
{
    InitializeComponent();

    image1.Visibility = System.Windows.Visibility.Visible;
    image2.Visibility = System.Windows.Visibility.Collapsed;

    timer.Interval = TimeSpan.FromSeconds(2);
    timer.Tick += new EventHandler(timer_Tick);
    timer.Start();
}

void FadeOut(UIElement element)
{
    DoubleAnimation FadeOut = new DoubleAnimation(1, 0, new Duration(TimeSpan.FromSeconds(0.5)));
    FadeOut.Completed += new EventHandler(FadeOut_Completed);
    element.BeginAnimation(OpacityProperty, FadeOut);
}

void FadeOut_Completed(object sender, EventArgs e)
{
    // How to find out which control was targeted?
}

void timer_Tick(object sender, EventArgs e)
{
    if (image1.Visibility == System.Windows.Visibility.Visible)
    {
        FadeOut(image1); 
        //image1.Visibility = System.Windows.Visibility.Collapsed;
        //image2.Visibility = System.Windows.Visibility.Visible;
    }
}
4

1 に答える 1

5

次のコードは、完成したアニメーションのターゲットを示します。FadeOut_Completed() ハンドラーに配置します。

DependencyObject target = Storyboard.GetTarget(((sender as AnimationClock).Timeline as AnimationTimeline))

ただし、これはアニメーション ターゲット オブジェクトが指定されている場合にのみ機能します。これを行うには、以下を FadeOut() メソッドに追加します。

Storyboard.SetTarget(FadeOut, element);
于 2012-04-30T12:39:23.000 に答える