WPF加载动画

3
我有一个包含许多项的 ListView 需要在搜索中加载。我希望提供用户更丰富的用户界面,因此在加载时,我想显示一个旋转的圆圈(来自 AJAX 等待)
我意识到我需要进入线程或其他内容,但由于我从未在 WPF 中做过这件事,我确信在 WPF 中有比线程更好的方法(或者是一个简单的 BackgroundWorker)。
无论如何,重点是在加载时显示该动画。你有什么建议吗?谢谢!
1个回答

2

好的,我现在有一个可行的解决方案。

我有一个包含该动画的UserControl。它在我的XAML代码中的某个位置,类似于这样:<customControls:LoadingAnimation x:Name="LoadingAnimation" />。需要时通过调用加载此控件。

LoadingAnimation.Show();

现在,当我点击一个按钮来执行耗时的工作之前,在调用BeginInvoke()之前,我会加载动画。
然后,当这项艰巨的工作完成后,我调用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
只需一个状态,IsSearching,并使用数据触发器显示和隐藏用户控件。 - TerrorAustralis

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接