【发布时间】:2012-05-11 06:22:34
【问题描述】:
我正在尝试构建一个 Panel 或 ItemsControl,它将以以下形式显示项目:
标题 1
- 子项 1
- 子项 2
- 子项 3
标题 2
- 子项 1
- 子项 2
这很容易,但这里的问题是我需要能够以分页方式拆分项目。根据控件的高度,不适合的内容将出现在下一页(依此类推)。如果子项之间发生拆分,我还需要在下一页上重新显示相应的标题。
我在使用 MeasureOverride 和 ArrangeOverride 方面取得了一些进展,但我一直遇到死胡同。这真的很令人沮丧,因为这在计算上是微不足道的,但却是在 WPF/Silverlight 中完成的噩梦。如果您曾经使用过报告包,那么这个概念与此非常相似。
我一直回到这样一个事实,即在将子项添加到控件(使用 Dispatcher.BeginInvoke)之前,我无法确定高度。
有没有人对此有任何建议?提前致谢!
编辑
[WPF] ObservableCollection and ListBoxItem DataTemplate generation problem
上面的链接与 mdm20 的建议非常相似,但我仍然卡住了。每次我尝试获取 ActualHeight 时,它都会返回 0。此外,Silverlight 3 中的 ItemContainerGenerator 会为容器返回 null,除非我将调用包装在 Dispatcher.BeginInvoke 操作中。
【问题讨论】:
-
尝试使用 this.UpdateLayout()
标签: wpf silverlight panel itemscontrol