码迷,mamicode.com
首页 > Windows程序 > 详细

WPF 实现ScrollViewer的垂直偏移滚动跳转

时间:2018-08-17 13:57:08      阅读:204      评论:0      收藏:0      [点我收藏+]

标签:each   vertica   全局变量   pre   答案   val   dict   问题:   inf   

问题:考虑屏幕大小,一般都是会在表单问卷的页面使用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的垂直偏移滚动跳转

标签:each   vertica   全局变量   pre   答案   val   dict   问题:   inf   

原文地址:https://www.cnblogs.com/AlienXu/p/9492755.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!