显示在获取数据时加载gif

时间:2016-12-12 15:50:42

标签: c# wpf mvvm

我想在WPF中显示加载gif,同时我在数据库中获取数据并查询这些数据。 我有一个带有2个用户控件和我的图像/加载gif的MainWindow。

我想我必须使用BackgroundWork,但我无法使其工作。

谢谢。

2 个答案:

答案 0 :(得分:1)

假设以下XAML,其中一个隐藏public IQueryable<Author> GetAuthors() { return db.Authors; } 和一个Image假装加载数据:

Button

在按钮的<StackPanel Margin="20"> <Image x:Name="loadingGif" Height="30" Source="Assets/Square.bmp" Visibility="Hidden" VerticalAlignment="Top" HorizontalAlignment="Left" /> <Button Content="Load" VerticalAlignment="Top" Click="OnGoClick" /> </StackPanel> 事件处理程序中,您可以看到Click并启动Image。完成BackgroundWorker后,再次隐藏BackgroundWorker

Image

(您需要注意 where 更改private void OnGoClick(object sender, RoutedEventArgs e) { loadingGif.Visibility = Visibility.Visible; BackgroundWorker worker = new BackgroundWorker(); worker.DoWork += OnDoWork; worker.RunWorkerCompleted += OnRunWorkerCompleted; worker.RunWorkerAsync(); } private void OnDoWork(object o, DoWorkEventArgs args) { Task.Delay(2000).Wait(); // Pretend to work } private void OnRunWorkerCompleted(object o, RunWorkerCompletedEventArgs args) { loadingGif.Visibility = Visibility.Hidden; } 属性;这需要在UI线程上进行。)

答案 1 :(得分:0)

您可以将任务用于长时间运行功能(加载数据)

LoadGif();
await Task.Run(() => LoadYourData());