首先,标题可能没有多大意义。欢迎提出改变建议。
我点击TextBox
内的ScrollViewer
。当发生这种情况时,ScrollViewer
将在高度上缩小(从下向上),它根本不会滚动,并且视口底部附近的一些控件会被遮盖(因为视口现在变小了)。如果TextBox
被遮盖,我需要滚动以使其仍然可见。
我已经检查了几个SO问题,似乎没有人能解决我的问题。 This one很接近,但我没有画布可以使用。另外,根据我的具体情况,我无法使用Dispatcher
等待用户界面加载,然后使用BringIntoView()
。
TextBox
分享了一个事件,TextBox_GotFocus
,
TextBox_GotFocus(object sender, RoutedEventArgs e)
{
myScrollViewer.Height = 400; //used to be 600
//if sender was in the 401-600 range, bring it into view
}
如果在高度变化后现在隐藏了输入的ScrollViewer
,如何滚动TextBox
?
答案 0 :(得分:0)
不,谢谢随机的downvote,但我设法想出一个迂回的方式来做到这一点。
TextBox_GotFocus(object sender, RoutedEventArgs e)
{
FrameworkElement element = sender as FrameworkElement;
//Get the distance from the top and bottom of the ScrollViewer
double offsetTop = element.TranslatePoint(new Point(), myScrollViewer).Y;
double offsetBottom = myScrollViewer.Height - offsetTop;
//Get total height needed to show the whole element
double height = 200 + element.Height;
//If the control would be hidden...
if (offsetBottom < height)
{
//Scroll down the difference
double change = myScrollViewer.VerticalOffset + (height - offsetBottom);
myScrollViewer.ScrollToVerticalOffset(change);
}
myScrollViewer.Height = 400; //used to be 600
}