当列表中包含列表时,Scrollable高度更改时VerticalOffset如何更改

时间:2012-04-04 11:15:22

标签: c# windows-phone-7 listbox windows-phone-7.1 dependency-properties

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

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

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

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

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

1 个答案:

答案 0 :(得分:0)

我无法找到计算结果。但是可以做的是listbox可以被一个scrollConer取代,里面有itemsControl。但缺点是虚拟化被禁用,因此需要对此进行检查。

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