你如何以编程方式滚动到WinRT中TextBox的底部?
我正在为WinRT编写一个简单的应用程序,而且我很难找出一种方法来自动滚动到我的代码中的TextBox底部。 我正在写日志信息到一个文本框,并希望它滚动,使最新的条目在框中可见,但似乎没有任何工作。 以下是我尝试过的一些事情:
将TextBox放置在ScrollViewer中:
this.txtLog.Text = this.txtLog.Text + line + "rn";
ScrollToVerticallOffset(scrollView.ScrollableHeight);
选择文本框中的最后一个数据:
this.txtLog.Select(this.txtLog.Text.Length, 0);
但是我没有做任何事情导致显示的文本滚动,以便底部的数据可见。
有没有人有任何想法?
这工作:
XAML
<TextBox
x:Name="tb"....
C#
var sv = tb.GetFirstDescendantOfType<ScrollViewer>();
sv.ScrollToVerticalOffsetWithAnimation(sv.ExtentHeight - sv.ViewportHeight);
这使用Winrt XAML Toolkit。
非工具包方式:
Func<DependencyObject, ScrollViewer> getFirstDescendantScrollViewer = null;
getFirstDescendantScrollViewer =
parent =>
{
var c = VisualTreeHelper.GetChildrenCount(parent);
for (int i = 0; i < c; i++)
{
var child = VisualTreeHelper.GetChild(parent, i);
var sv = child as ScrollViewer;
if (sv != null)
return sv;
sv = getFirstDescendantScrollViewer(child);
if (sv != null)
return sv;
}
return null;
};
var tbsv = getFirstDescendantScrollViewer(tb);
tbsv.ScrollToVerticalOffset(tbsv.ScrollableHeight);
链接地址: http://www.djcxy.com/p/68657.html
上一篇: How do you programatically scroll to the bottom of a TextBox in WinRT?