Silverlight 如何使用ScrollViewer.ScrollToVerticalOffset?
我希望这不是重复的,但我找不到任何关于如何实际使用Silverlight 如何使用ScrollViewer.ScrollToVerticalOffset?,silverlight,windows-phone-8,windows-phone,scrollviewer,Silverlight,Windows Phone 8,Windows Phone,Scrollviewer,我希望这不是重复的,但我找不到任何关于如何实际使用ScrollToVerticalOffset()的文档或示例。我在WindowsPhone8应用程序中使用它,但我认为它仍然适用于WP7和Silverlight(尽管,如果我错了,请随时纠正我) 下面是我的基本设置(内存中的伪代码): 如您所见,我在一个数据透视项中有一个滚动查看器,里面是一个网格。在网格中大约有20个文本框s,每个文本框位于边框内。当加载此页面时,我会动态地将焦点设置为其中一个TextBoxs,因此每当我将焦点设置为Text
ScrollToVerticalOffset()
的文档或示例。我在WindowsPhone8应用程序中使用它,但我认为它仍然适用于WP7和Silverlight(尽管,如果我错了,请随时纠正我)
下面是我的基本设置(内存中的伪代码):
如您所见,我在一个数据透视项中有一个滚动查看器
,里面是一个网格
。在网格中
大约有20个文本框
s,每个文本框位于边框内
。当加载此页面时,我会动态地将焦点设置为其中一个TextBox
s,因此每当我将焦点设置为TextBox
#6-20(大致上)-我都必须手动向下滚动才能看到它。我想自动滚动我的ScrollViewer
,这样无论哪个TextBox
有焦点,它都将居中以供用户查看
用于滚动垂直偏移量()
的
将ScrollViewer中的内容滚动到指定的位置
垂直偏移位置
Point textBoxPosition = transform.Transform(new Point(0, 0));
它接受一种类型的System.Double
我不明白的是A)我应该传递的值,和B)我怎么能得到那个值?它应该是介于0和我的网格高度(1500)之间的数字吗?如果是,我如何确定任何给定文本框的位置,以便滚动到它
如果有任何简单的例子,请随时链接到它们。我不确定调用此方法时,ScrollViewer
中的内容是否重要,但如果重要,我想确切地说明我是如何使用它的
非常感谢 您可以使用UIElement.TransformToVisual调用查看任何UIElement相对于另一个UIElement的位置
首先,获取TextBox和ScrollViewer之间的转换
GeneralTransform transform = textBox.TransformToVisual(scrollViewer);
然后,找出文本框的哪个点(0,0)相对于ScrollViewer。也就是说,文本框原点(0,0)位于ScrollViewer的位置
Point textBoxPosition = transform.Transform(new Point(0, 0));
现在您已经知道文本框相对于ScrollViewer的Y位置,请滚动到Y偏移
scrollViewer.ScrollToVerticalOffset(textBoxPosition.Y);
祝你好运 工作完美。再次感谢!小问题,为什么要实施此设置?为什么不使用longlistselector?我想知道:)好问题-我想主要原因是我不熟悉LongListSelector
,而且我还没有做足够的研究来知道它是否是一个更好的选择。基本上,我正在制作一个“前十名排行榜”类型的东西,它将显示前十名的名字和分数。如果一个新的分数大于第10个分数,我将在正确的位置插入一个文本框
,并让用户保存它。我上面的伪代码显然没有反映所有这些功能。所以在我的实际场景中,有10个不同的TextBlocks
,我用它们作为标签,然后它们被调整/移动为“新条目”并在其位置放置一个文本框
,让用户将其姓名保存到该位置。好的,感谢您的澄清!