在WPF中单击TreeView节点时显示加载图像

时间:2011-07-19 16:40:36

标签: wpf

问题是我们有一个WPF应用程序,它有Tree View。在点击节点报告生成没有时间间隔(我的意思是不知道它将花多少时间)。所以我打算在窗口上显示一个Loading.gif文件,直到生成报告。

如何在主窗口进程显示报告时显示图像(.gif),并在显示报告后隐藏图像。

你还有其他替代方法吗?

提前感谢您的帮助。

3 个答案:

答案 0 :(得分:1)

您可以使用Extended WPF Toolkit的BusyIndicator

答案 1 :(得分:1)

以下是如何制作异步多线程树视图的示例 - > http://www.codeproject.com/KB/WPF/ThreadedWPFExplorer.aspx

答案 2 :(得分:0)

这方面的一般技巧是:

1)在窗口的视图模型中创建IsBusy属性;确保它在变化时引发PropertyChanged

2)在单击项目时执行的代码中,使用BackgroundWorker运行长时间运行的任务。

3)在致电BackgroundWorker.DoWork()之前,请将IsBusy设为true。在引发BackgroundWorker.RunWorkerCompleted时调用的事件处理程序中,将IsBusy设置为false。

4)在窗口的DataTemplate中,添加一个Style DataTrigger绑定到IsBusy,并使用它来控制图像的可见性。< / p>

请注意,您可以将IsBusy(以及长时间运行的任务和BackgroundWorker)移动到项目视图模型而不是窗口视图模型,并添加“加载”动画到DataTemplate

如果这样做,用户可以同时启动多个项目,并且整个应用程序不会因为TreeView中的一个项目被点击而锁定。 (当然,您必须处理同时生成多个报告所涉及的任何多线程问题。)