1

我有这种情况 - 我想建立时间线控制。所以我有 UserControl 和 ItemsControl (每一行代表某个人)。ItemsControl 包含另一个 ItemsControl 作为 ItemsControl.ItemTemplate - 它显示例如按事件日期排列的人员的事件。

所以它看起来像某种网格,日期作为列标题,例如人民作为行标题。......................|。2010.01.01 ..... 2010.01.02 ..... 2010.01.03
亚当·史密斯....|......[一些事件#1].....[一些事件#2]。 ......

John Dow .......|...[一些事件#3]......[一些事件#4]......

我可以有很多人(ItemsControl #1 - 100-200 个项目),并且有一天会发生很多事件(每人一天 1-10-30 个事件)

问题是,当用户滚动 ItemsControl #1/#2 时,它发生得太慢了,因为很多元素应该一次呈现(因为我在特定事件的描述中有一些文本框和其他元素)

问题 #1 - 我该如何改进它?可能有人知道建立这种用户控制的更好方法吗?我不得不提到我正在使用自定义虚拟面板,基于在互联网某处找到的一些自定义虚拟面板实现......

问题 #2 - 我想在 WriteableBitmap 的帮助下制作图像并将数据绑定控件渲染到图像并显示图像而不是很多元素。问题是我正在尝试渲染不可见的数据绑定控件(在后面的代码中创建)并且它的实际宽度/高度等于零(所以没有渲染)即使我正在使用 Dispatcher.BeginInvoke(() => {.. .} 方法。我该如何解决呢?

非常感谢您的帮助!

4

1 回答 1

2

关于问题 #1:嵌套 ItemsControl 虚拟化很棘手。问题是即使最外面的控件支持虚拟化,内部控件的长度也是无限的,因此会实例化它们的所有子控件。与其在另一个中托管 ItemsControl,不如将所有数据合并到同一个列表中,使用样式来模拟层次结构。或者,找到支持嵌套虚拟化的商业数据网格控件。

于 2010-04-29T02:39:18.577 回答