2009-07-29 75 views
3

我有一个ListView与许多要在搜索中加载的项目。 我想为用户提供更丰富的用户界面,以便在加载时,我会显示一个旋转圆圈(从AJAX等待中已知)。我知道我将不得不进入线程或其他东西,但因为我从来没有在WPF中做过这件事,所以我确信有比WPF中的线程更好的东西(或者一个简单的BackgroundWorker)。WPF加载动画

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

回答

2

好,我已经有了一个可行的解决方案了。

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

LoadingAnimation.Show(); 

现在,当我点击一个按钮做耗时的工作,之前我调用BeginInvoke()我 加载动画neede该控件加载。

然后,当艰苦的工作完成后,我打电话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 */; 
} 
+0

只是好奇,你是如何解决取消部分? – cwap 2009-08-28 06:48:15