UWP ListView:如何修改BringIntoView以双向显示部分相邻项
ListView调用BringIntoView时显示相邻项部分内容
我正在开发一个包含多项的ListView,支持用户上下滚动。需求是:调用BringIntoView时,除了将目标项显示在视图中,还要展示滚动方向上相邻项的一小部分,以此提示用户列表还有上方或下方的内容。
我制作了简化测试应用调试该功能,期望效果如下:
- 箭头指示滚动方向
- 红色括号标注的是需要显示的相邻项区域


若有需要澄清的地方,请告知。
已尝试的方案
- 为ItemsPresenter/ScrollViewer/ListView设置正负margin
- 处理
ListView.SelectionChanged事件,通过计算判断滚动方向,调用ScrollViewer.ChangeView传入计算后的垂直偏移值 - 处理
ListView.BringIntoViewRequested事件,设置args.Handled = true,并使用不同BringIntoViewOptions参数(含VerticalOffset、VerticalAlignmentRatio和调整Y值的新TargetRect)发起新请求
我参考了相关问题尝试BringIntoViewOptions方案,但所有尝试均未成功。期望保留现有BringIntoView功能,同时让目标项滚动至能显示相邻项一小部分的位置。
内容的提问来源于stack exchange,提问作者john-g
相关产品推荐
相关产品推荐

