我有一些UI任务需要很长时间。我有一些“自制”属性网格(我使用ItemControl,其中项目模板使用ContentControl,项目本身保存要在Content控件中使用的数据窗口。)。
应用程序是Shapes查看器,其中每个形状都有其属性。每次用户点击某个形状时,属性网格都会显示其属性(60种不同的属性)。
更新过程大约需要1-2秒。而这会更新应用程序冻结。
有没有办法在后台更新属性网格? 有没有办法阻止上次更新?
问候,莱昂
答案 0 :(得分:0)
您需要使用线程和调度程序来执行此操作。
WPF / SL中的调度程序 - http://www.switchonthecode.com/tutorials/working-with-the-wpf-dispatcher
为了使用另一个线程,你有一些选择:
如果您不知道如何使用线程,则第3个选项最简单。
我想要花费这么长时间才能获取属性,所以你需要做的是在另一个线程中执行fetch,然后在这个线程中使用Dispatcher来更新你的datagrid, 你必须使用Dispatcher从另一个线程更新你的GUI。
答案 1 :(得分:0)
您应该实现MVVM模式,以确保您的UI控件是一种显示数据的方式,而不是数据的持有者。
然后,您可以选择执行各种后台任务,并在准备好后仅更新VM内容。
观看此视频: