5

我的 ViewModel 根据用户点击选择一个视图。其中一个视图包含许多视觉元素 - 带有数据模板的视图模型,其中包含带有数据模板的视图模型,每个视图都在带有背景图像刷的画布上呈现。整个视图以大约 100 个这样的画布画笔结束,每个画笔都叠加了十几个椭圆,整个视图位于可滚动的视图框中。

第一次创建此视图时,用户单击然后在其全部呈现时停留一段时间。我想早点完成这个渲染 - 例如在启动期间。我已经创建了视图对象,但是当用户单击时,我们仍然在渲染完成时徘徊。

有没有办法让 WPF/xaml 预渲染它,以便点击响应更好?

4

1 回答 1

4

如我所见,您正在使用 MVVM 模式。我会尝试以下方法:

在启动期间创建视图并将其设置DataContext为您的视图模型实例。然后模拟 WPF 执行的工作。视图上的调用Measure()Arrange()方法强制 WPF 更新数据绑定并生成可视化树。

但是只有一个 UI 线程。因此,此时再次阻止您的启动程序。您可以通过将“工作”分成更小的部分来避免这种情况。也许您的视图模型中有一些项目集合。然后,您可以使用DipatcherTimer并在每个步骤中将一些合理数量的项目添加到集合中,并在每次迭代后调用 Measure 和 Arrange 来更新视图的可视化树。视图完全初始化后,渲染不应再阻塞。

于 2012-12-10T11:05:52.400 回答