我有这种情况 - 我想建立时间轴控制。所以我有UserControl和ItemsControl(每行代表一个人)。 ItemsControl包含另一个ItemsControl作为ItemsControl.ItemTemplate - 它显示例如按活动日期安排的人员活动。
所以它看起来像某种网格,日期作为列标题,例如人们作为行标题。
........................ | 2010.01.01 .....的 2010年1月2日 .....的 2010年1月3日
Adam Smith .... | ...... [某事件#1] ..... [某事件#2] ......
John Dow ....... | ... [某事件#3] ..... [某事件#4] ......... < / p>
我可以有很多人(ItemsControl#1 - 100-200项目)并且有一天发生了很多事件(每人每天1-10-30个事件)
问题是,当用户滚动ItemsControl#1 /#2时,由于很多元素应该一次渲染,因此发生了太多的懒散(因为我在例如特定事件的描述中有一些文本框和其他元素) )
问题#1 - 我该如何改进?可能有人知道更好的方法来构建这样的用户控件吗?我不得不提一下,我正在使用自定义虚拟面板,基于在互联网上找到的一些自定义虚拟面板实现......
问题#2 - 我想借助WriteableBitmap制作图像,并将数据绑定控件渲染到图像并显示图像而不是很多元素。问题是我正在尝试渲染不可见的数据绑定控件(在后面的代码中创建)并且它的actualWidth / Height等于零(因此没有呈现),即使我正在使用Dispatcher.BeginInvoke(()=&gt; {。 ..}方法。我该如何解决?
非常感谢你的帮助!
答案 0 :(得分:2)
关于问题#1:嵌套的ItemsControl虚拟化很棘手。问题是,即使最外层控件支持虚拟化,内部控件也会以无限长度进行测量,从而实例化所有子节点。而不是将ItemsControl托管在另一个内部,使用样式来模拟层次结构,将所有数据合并到同一列表。或者,找到支持嵌套虚拟化的商业数据网格控件。