gui没有更新

时间:2012-04-13 14:15:59

标签: c# wpf user-interface

我的自助服务终端应用程序遇到了以下问题:

我有一个带有一些缩略图的窗口。当用户点击缩略图时,会显示另一个带有信息的窗口(docview),并在中间显示一个文档..

我想让docview立即可见,然后开始加载文档(文档加载需要1-3秒),然后将其添加到界面中。

当我点击一个拇指时,界面会冻结一两秒钟,然后文档已经显示文档已经显示..

这就是我的所作所为:

        viewgrid.Children.Add(docView); // the main window uses this grid to display the windows
        viewgrid.InvalidateVisual();
        viewgrid.UpdateLayout(); // at this point I would like to have the docView visible
        docView.showDocument(); //and afterwards, the loading of the document should start and be also visible eventually..

我尝试使用LayoutUpdated事件但没有成功。将showDocument放在一个单独的线程中也没有帮助..我也读过有关Application.DoEvents()的内容,但是这个已被弃用,无论如何都是不好的做法.. < / p>

我该如何解决这个问题?

提前致谢!

2 个答案:

答案 0 :(得分:0)

您可以尝试使用异步绑定。或者使用另一个线程和Dispatcher手动执行。但这取决于你的ShowDocument正在做什么,这很慢。

答案 1 :(得分:0)

您需要使用BackgroundWorker对象来加载文档。你说你试过线程,它没有用,但你需要让线程工作,我建议你使用后台工作者。 http://msdn.microsoft.com/en-us/library/system.componentmodel.backgroundworker(v=vs.110).aspx

我不确定你要加载什么类型的文档,但我使用Binding加载了一个RichText文件,如下所述: http://www.rhyous.com/2011/08/01/loading-a-richtextbox-from-an-rtf-file-using-binding-or-a-richtextfile-control/

只有在BackgroundWorker中加载文档时,才会执行相同的操作。加载文档后,您将更新绑定属性,UI将更新。