3

我的 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 中的任何业务逻辑都只会在动画完成加载后发生。

这可能吗?

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

4

1 回答 1

2

好的 解决了问题。

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

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

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

private void StoryCompleted(object sender, EventArgs e)
{
//Windows onload stuff goes here...
}
于 2013-08-15T23:18:18.140 回答