是否从WPF中的DoubleAnimation Completed事件获取目标控件?
我希望有人能帮我解决我认为相对简单的问题 我正在使用DoubleAnimation对象在代码中设置淡出动画。它淡出图像,然后在完成时触发已完成的事件 我想从事件处理程序中获取淡出动画应用到的控件的名称,但我找不到方法 谢谢你的帮助。谢谢是否从WPF中的DoubleAnimation Completed事件获取目标控件?,wpf,animation,Wpf,Animation,我希望有人能帮我解决我认为相对简单的问题 我正在使用DoubleAnimation对象在代码中设置淡出动画。它淡出图像,然后在完成时触发已完成的事件 我想从事件处理程序中获取淡出动画应用到的控件的名称,但我找不到方法 谢谢你的帮助。谢谢 DispatcherTimer timer = new DispatcherTimer(); public MainWindow() { InitializeComponent(); image1.Visibility = System.Wi
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;
}
}
以下代码为您提供完成动画的目标。将其置于淡出(FadeOut_Completed()处理程序中: 但是,这仅在指定动画目标对象时有效。要执行此操作,请将以下内容添加到FadeOut()方法:
发件人?此动画的目标没有显式设置,因此如果它工作,它肯定是sender。如何显式设置目标?更新了包含计时器滴答事件的代码。我有点错,但找到了解决方案。看到我的答案了吗
DependencyObject target = Storyboard.GetTarget(((sender as AnimationClock).Timeline as AnimationTimeline))
Storyboard.SetTarget(FadeOut, element);