在UI线程之外以编程方式构建UI元素的任何方法
本文关键字:UI 元素 构建 任何 方法 方式 编程 线程 | 更新日期: 2023-09-27 18:17:34
我知道我需要在WPF的主UI线程上创建和添加元素到另一个元素,您可以在使用Dispatcher的另一个线程上轻松地做到这一点。
然而,我想建立我的元素离开UI线程,然后添加它们在一个批次如果可能的话。
这是因为我正在构建数千个元素,而UI线程所花费的几秒钟就冻结了整个应用程序。
有什么办法可以做到吗?
我不这么认为;但是,您可以通过逐步加载元素而不使GUI完全挂起来创建更流畅的用户体验。这可以通过订阅CompositionTarget.Rendering
事件来实现,该事件将在每次渲染帧时被调用。如果您维护需要添加的视图模型(以及相应的控件类型)的列表,则可以创建一些(例如,50个)并将它们添加到事件处理程序中的可视化树中。下次调用该事件时,再添加50个,依此类推。
这是可能的,你要做的是创建两个UI线程。在一个UI线程上,你建立你的窗口,并在另一个UI线程上显示某种进度指示(进度条)。让你的窗口在你建立的时候是可见的。
http://eprystupa.wordpress.com/2008/07/28/running-wpf-application-with-multiple-ui-threads/我建议您使用一些复合应用程序模式,比如Prims。请参阅使用WPF构建复合应用程序的模式。Prism允许解耦你的应用组件,也可以根据需要加载它们。你还可以看到:棱镜