2

我的应用程序需要在启动时在 MainWindow 中加载用户控件。然而,用户控件的初始化很慢。(不是因为加载业务数据,我已经把UI和业务层分开了)

我要做的是在等待用户控件的初始化时,会出现一个忙碌指示符,并在用户控件的初始化完成后消失。

现在我在 MainViewModel 中有一个 IsBusy 属性,并且数据绑定到 MainWindow 中的 busyindicator。

子用户控件通过内容控件显示。

presenter.Content = new ChildUserControl(); 
//presenter is the contentcontrol in MainWindow

但是,如何同时运行初始化和忙碌指示符的显示呢?看来我需要不同的线程来处理这个问题。

但是,在另一个线程上运行初始化同时让主 UI 线程显示忙碌指示器将不起作用,因为另一个线程中的子控件不能放在其父控件中,在这种情况下是 MainWindow。

有什么想法吗?

4

2 回答 2

1

我自己实现了它。即我有一个场景,我们加载了 XPS 文档(它真的很慢),然后我不得不实现微调器(“忙碌指示器”)。但这不起作用,因为它们在同一个线程上。

现在 Dwayne 想出了一个巧妙的方法来实现多线程,并且成功了。 http://blogs.msdn.com/b/dwayneneed/archive/2007/04/26/multithreaded-ui-hostvisual.aspx

于 2013-05-15T04:52:49.770 回答
0

显示动画加载光标怎么样?Windows 已经处理了鼠标上的线程。我之前遇到过这个问题,我在另一个线程上实现了自己的加载动画,但是我在渲染优先级方面遇到了问题,导致主要执行代码很慢,除非鼠标光标移动到进度对话框的顶部。https://stackoverflow.com/a/307020/2247427

于 2013-05-14T22:57:35.687 回答