1

我正在制作一个具有 UserControls 列表框的 WP7 应用程序。每个 UserControl 都有一个 ItemsControl 和 Button(用于获得更多结果)。单击按钮时,ItemsControl 项目将增加 5 或 10。

现在单击除第一个或最后一个之外的任何用户控件的 GetMore 按钮时,ListBox 的可滚动高度(列表框的总高度)将增加,但 ListBox 的 VerticalOffset(滚动条从顶部的位置)仍然存在相同的。现在我面临的问题是垂直偏移不是绝对的,而是相对于可滚动高度。因此,直到那时正在查看的内容将根据 ScollableHeight 的新值进行更改。

我想知道它们之间的关系,以便我可以做一些数学运算并设置 VerticalOffset 值。

我在 VerticalOffset 和 ScrollableHeight 上添加了一些依赖属性,当其中任何一个发生更改时,我可以通过它们获取事件。尝试使用 ScrollIntoView 重新调整垂直偏移

任何建议或更正都非常感谢。

4

1 回答 1

0

我找不到计算方法。但是可以做的是列表框可以替换为滚动查看器,其中包含 itemsControl。但这样做的缺点是禁用了虚拟化,因此需要对此进行检查。

但是,总的来说,这会给在 Listbox 中使用这样的 UserControl 带来不好的体验。因此,使用 WP7 工具包中给出的模板化列表框是一个选项,但它会挂起一点,因为 ListBox 没有针对多模板化虚拟化进行优化。所以我开始展示编写列表框项目模板的方式,它包含所有可能的布局,这些布局将从一个条件中启用。

于 2012-04-23T15:33:43.390 回答