1

如何VerticalOffset更改时,我正在制作一个WP7应用程序,它具有UserControls的列表框。每个UserControl都有一个ItemsControl和Button(用于获取更多结果)。点击按钮ItemsControl项目将增加5或10.当可滚动高度变化,同时列表里面列表

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

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

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

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

回答

0

我无法找到计算。但是可以做的是listbox可以被一个scrollviewer替换,它里面有itemsControl。但这样做的缺点是虚拟化被禁用,因此需要检查这一点。

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