问题是我们有一个WPF应用程序,它有Tree View。在点击节点报告生成没有时间间隔(我的意思是不知道它将花多少时间)。所以我打算在窗口上显示一个Loading.gif文件,直到生成报告。
如何在主窗口进程显示报告时显示图像(.gif),并在显示报告后隐藏图像。
你还有其他替代方法吗?
提前感谢您的帮助。
答案 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
中的一个项目被点击而锁定。 (当然,您必须处理同时生成多个报告所涉及的任何多线程问题。)