如何正确协调Windows加载动画和C#事件



我的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线程处理,所以在渲染Window时动画已经完成。

我缺少的是一种协调动画的好方法,这样我在MyWindow_Loaded中的任何业务逻辑都只有在动画完成加载后才会出现。

这可能吗?

编辑:我还尝试了线程睡眠,但这也不起作用。

好的,解决了问题。

在XAML中,向情节提要添加了一个新的事件处理程序:

<Storyboard x:Key="SESLogoLoad" Completed="StoryCompleted">

然后使用C#手动创建了一个方法:

private void StoryCompleted(object sender, EventArgs e)
{
//Windows onload stuff goes here...
}