1

我知道我需要在 WPF 的主 UI 线程上创建元素并将其添加到另一个元素,并且您可以在使用 Dispatcher 的另一个线程上轻松执行此操作。

但是,我想从 UI 线程构建我的元素,然后如果可能的话将它们全部添加到一批中。

这是因为我正在构建数千个元素,而它在 UI 线程上花费的几秒钟就冻结了整个应用程序。

有没有办法做到这一点?

4

3 回答 3

1

我不这么认为;但是,您可以通过逐渐加载元素而不会使 GUI 完全挂起来创建更流畅的用户体验。这可以通过订阅CompositionTarget.Rendering事件来完成,每次渲染帧时都会调用该事件。如果您维护需要添加的视图模型(和相应的控件类型)的列表,您可以创建其中的一些(例如,五十个)并将它们添加到事件处理程序中的可视化树中。下次调用该事件时,您再添加 50 个,依此类推。

于 2013-06-10T08:15:30.723 回答
0

我建议您使用一些复合应用程序模式,例如 Prims。请参阅使用 WPF 构建复合应用程序的模式。Prism 允许解耦您的应用程序组件,并根据需要加载它们。您还可以看到:棱镜 希望这会有所帮助......

于 2013-06-10T20:42:23.430 回答
0

有可能,您所做的是创建两个 UI 线程。在一个 UI 线程上,您构建窗口并在另一个 UI 线程上显示某种进度指示(进度条)。当你建立它时,让你的窗口可见。

http://eprystupa.wordpress.com/2008/07/28/running-wpf-application-with-multiple-ui-threads/

于 2013-06-10T09:11:23.047 回答