我的 WPF 应用程序有一个使用 Blend 创建的窗口加载动画。实际的动画效果很好,但是如果我向窗口加载事件(使用 C#)添加逻辑,动画会在窗口最终呈现时跳到结束。
我最初的计划是使用线程来解决这个问题,但这也不起作用:
private void MyWindow_Loaded(object sender, RoutedEventArgs e)
{
dispatcherTimer.Tick += new EventHandler(dispatcherTimer_Tick);
dispatcherTimer.Interval = new TimeSpan(0, 0, 30);
dispatcherTimer.Start();
lstRecipients.Visibility = Visibility.Hidden;
windowAdorner = new TransparentAdorner(BorderGrid);
if (!StaticHelpers.AWSConfigurationExists())
{
this.IsEnabled = false;
GettingStarted gettingStarted = new GettingStarted(this);
gettingStarted.Owner = this;
gettingStarted.ShowDialog();
this.IsEnabled = true;
}
else
{
Task SetAWSLabelsTask = new Task(new Action(() => SetAWSLabels()));
SetAWSLabelsTask.Start();
}
Task bounceHandler = new Task(new Action(() => processBounce()));
bounceHandler.Start();
//processBounce();
Task unSubscribeHandler = new Task(new Action(() => handleUnsubscriptions()));
unSubscribeHandler.Start();
}
我假设系统正忙于创建线程,并且创建由 UI 线程处理,以至于在渲染窗口时动画已经完成。
我缺少的是一种协调动画的好方法,这样我在 MyWindow_Loaded 中的任何业务逻辑都只会在动画完成加载后发生。
这可能吗?
编辑:我也尝试了线程睡眠,但这也不起作用。