問題:考慮屏幕大小,通常都是會在表單問卷的頁面使用ScrollViewer。問卷中問題漏填漏選時,在提交時校驗不過,須要滾動跳轉至漏填漏選項。code
頁面以下:blog
每一個選項使用StackPanel,並對複選框和單選的勾選事件進行答案記錄,使用全局變量記錄事件
private readonly Dictionary<string, string> _dicAnswer = new Dictionary<string, string>();
將全部選項使用StackPanel指定垂直樣式,思路是借用字典記錄每一題的答案,給題目編號記錄,答案爲空,即未回答該問題。
在提交按鈕的click事件中添加以下代碼string
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);