WPF加载动画

时间:2009-07-29 08:32:23

标签: wpf search animation asynchronous

我有一个 ListView ,其中包含许多要在搜索中加载的项目。 我想为用户提供更丰富的用户界面,以便在加载时,我会显示一个旋转的圆圈(从AJAX等待中知道)

我意识到我必须进入Threads或其他东西,但是因为我以前从未在WPF中做过这个,所以我确信在WPF(或简单的BackgroundWorker)中有比Threads更好的东西。

无论如何,重点是在加载时显示该动画。 任何的想法?谢谢!

2 个答案:

答案 0 :(得分:2)

好的,我现在有了一个有效的解决方案。

我有一个包含该动画的 UserControl 。它位于我的XAML代码中的某个位置,如下所示:<customControls:LoadingAnimation x:Name="LoadingAnimation" />。通过调用

来加载此控件
LoadingAnimation.Show();

现在,在我调用BeginInvoke()之前,我单击一个Button来完成耗时的工作 加载那个动画。

然后,当努力工作完成后,我致电LoadingAnimation.Hide(). 非常简单!我为其他人添加了代码:

private void SearchClick(object sender, RoutedEventArgs e)
{
     LoadingAnimation.Show();

     new StringDelegate(DoSearch).BeginInvoke("TextToSearch", null, null);
}

private void DoSearch(string searchText)
{
    object result = /* Do the time consuming work */    

    Dispatcher.BeginInvoke(DispatcherPriority.Normal,
         new ResultDelagate(UpdateUserInterface), result);
}

private void UpdateUserInterface(object result)
{
    LoadingAnimation.Hide();            

    DataContext = result as /* what you want */;
}

答案 1 :(得分:0)

我发现一篇文章对此有正确的说法:

http://msdn.microsoft.com/en-us/library/ms741870.aspx