我有一个 ListView ,其中包含许多要在搜索中加载的项目。 我想为用户提供更丰富的用户界面,以便在加载时,我会显示一个旋转的圆圈(从AJAX等待中知道)。
我意识到我必须进入Threads或其他东西,但是因为我以前从未在WPF中做过这个,所以我确信在WPF(或简单的BackgroundWorker)中有比Threads更好的东西。
无论如何,重点是在加载时显示该动画。 任何的想法?谢谢!
答案 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)
我发现一篇文章对此有正确的说法: