WPF 實現ScrollViewer的垂直偏移滾動跳轉
阿新 • • 發佈:2019-02-03
問題:考慮螢幕大小,一般都是會在表單問卷的頁面使用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);