1

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

我有一个带有一些缩略图的窗口。当用户单击缩略图时,会显示另一个带有信息的窗口(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() 的信息,但这已被弃用并且似乎是不好的做法..

我应该如何解决这个问题?

提前致谢!

4

2 回答 2

0

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

于 2012-04-13T14:25:18.243 回答
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 将更新。

于 2012-04-13T15:25:46.243 回答