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
,我用它们作为标签,然后它们被调整/移动为“新条目”并在其位置放置一个
文本框
,让用户将其姓名保存到该位置。好的,感谢您的澄清!