3

我有一个网格控件试图显示大量数据,因此在 UI 线程上呈现需要很长时间。

我添加了一个加载栏,它根据屏幕是否忙碌(正在渲染)进行动画和显示。

但是,当网格尝试渲染时,加载栏只是冻结。我假设这是因为只有一个 UI 线程并且该线程很忙。

有谁知道我可以保持加载栏动画的方法?

非常感谢,

马特

4

2 回答 2

0

如果你坚持网格一次渲染所有数据,这完全取决于网格的渲染代码是否可以“屈服”,有点像旧的 Windows 窗体“DoEvents()”方法。听起来它的实现方式实际上是在渲染过程中不会将处理返回给 UI 线程,因此您的进度条永远不会更新。

网格在渲染其内容时是否会调用您自己的代码?如果是这样,您可以使用这些实例来更新进度条的状态。

您是否考虑过虚拟化网格的内容?如果将需要呈现的 FrameworkElements 包装在 VirtualizingStackPanel 中,则基本上可以免费获得 UI 虚拟化。如果您想要更复杂一点,您还可以通过使用 PagedCollectionView 类包装您的数据集,然后编写 . 有关更多详细信息,请参见此处。另一种(更简单?)实现相同类型虚拟化的方法请参见此处

于 2011-02-07T17:09:19.163 回答
0

您需要处理从 UI 渲染中获取的枚举或数据,执行处理部分以使数据准备好在单独的线程上进行 UI 渲染。

http://msdn.microsoft.com/en-us/library/cc221403(v=vs.95).aspx

于 2011-02-07T15:20:04.290 回答