在手机中点击文本框输入内容时,经常会遇到文本框本身被输入法挡住的问题,所以有必要在文本框获得焦点时,将其移到页面最上方显示
以垂直滚动为例子
public static void ScrollToElement(this Windows.UI.Xaml.Controls.ScrollViewer scrollViewer, UIElement uiElement)
{
var transform = uiElement.TransformToVisual(scrollViewer);
var point = transform.TransformPoint(new Point(0, 0));
if (point.Y != 0)
{
var y = point.Y + scrollViewer.VerticalOffset;
scrollViewer.ChangeView(null, y, null, true);
}
}
这段代码是对ScrollViewer类型扩展了一个方法,它会将scrollViewer垂直滚动到uiElement出现在ScrollViewer的可见的最顶部
其中,通过transform获取到的是将uiElement从scrollViewer当前的垂直位置移动到顶端的距离,所以在ChangeView中需将这个Y与垂直位移相加