wpf 中, 我要实现这个逻辑: 点击按钮, 显示加载动画, 执行费时操作, 取消加载动画. 但是实际运行时, 不会显示加载动画
时间: 2023-08-22 08:06:34 浏览: 95
jQuery+CSS3实现的点击按钮显示加载动画特效源码.zip
你可以将这个逻辑放在一个异步方法中,这个异步方法中先显示加载动画,然后执行费时操作,最后取消加载动画。在异步方法中,你需要使用 `await Task.Run()` 来执行费时操作,这样可以将费时操作放在后台线程中,避免阻塞 UI 线程。同时,在异步方法中,你需要使用 `Dispatcher.Invoke()` 或 `Dispatcher.BeginInvoke()` 来更新 UI 界面,这样可以确保在 UI 线程中进行更新操作,从而避免显示加载动画失败的问题。下面是一个示例代码:
```
private async void Button_Click(object sender, RoutedEventArgs e)
{
// 显示加载动画
this.loadingControl.Visibility = Visibility.Visible;
// 执行费时操作
await Task.Run(() =>
{
// TODO: 执行费时操作
});
// 取消加载动画
this.Dispatcher.Invoke(() =>
{
this.loadingControl.Visibility = Visibility.Collapsed;
});
}
```
这里假设 `loadingControl` 是你用来显示加载动画的控件。你需要将其初始值设置为 `Collapsed`,这样在开始时加载动画就不会显示出来。在异步方法中,使用 `Visibility.Visible` 来显示加载动画,使用 `Visibility.Collapsed` 来隐藏加载动画。
阅读全文