WPF 实现ScrollViewer的垂直偏移滚动跳转
Posted alienxu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WPF 实现ScrollViewer的垂直偏移滚动跳转相关的知识,希望对你有一定的参考价值。
问题:考虑屏幕大小,一般都是会在表单问卷的页面使用ScrollViewer。问卷中问题漏填漏选时,在提交时校验不过,需要滚动跳转至漏填漏选项。
页面如下:
每个选项使用StackPanel,并对复选框和单选的勾选事件进行答案记录,使用全局变量记录
private readonly Dictionary<string, string> _dicAnswer = new Dictionary<string, string>();
将所有选项使用StackPanel指定垂直样式,思路是借用字典记录每一题的答案,给题目编号记录,答案为空,即未回答该问题。
在提交按钮的click事件中添加如下代码
var answer = _dicAnswer.First(_ => string.IsNullOrEmpty(_.Value));
var title = answer.Key;
double verticalOffset = 0;
foreach (var child in QuestionsStackPanel.Children)
{
if (!(child is StackPanel sp))
{
continue;
}
if (sp.Tag.ToString() != title)
{
continue;
}
//获取偏移量
var vector = VisualTreeHelper.GetOffset(sp);
verticalOffset = vector.Y;
break;
}
//滚动到指定的垂直偏移位置
QuestionsScrollViewer.ScrollToVerticalOffset(verticalOffset);
以上是关于WPF 实现ScrollViewer的垂直偏移滚动跳转的主要内容,如果未能解决你的问题,请参考以下文章
WPF,ScrollViewer的属性VerticalScrollBarVisibilityHorizontalScrollBarVisibility值的区别