WPF 实现ScrollViewer的垂直偏移滚动跳转
程序员文章站
2023-08-02 21:35:24
问题:考虑屏幕大小,一般都是会在表单问卷的页面使用ScrollViewer。问卷中问题漏填漏选时,在提交时校验不过,需要滚动跳转至漏填漏选项。 页面如下: 每个选项使用StackPanel,并对复选框和单选的勾选事件进行答案记录,使用全局变量记录 将所有选项使用StackPanel指定垂直样式,思路 ......
问题:考虑屏幕大小,一般都是会在表单问卷的页面使用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);