我希望这不是重复的,但我找不到任何关于如何实际使用 ScrollToVerticalOffset()
. 我在 Windows Phone 8 应用程序中使用它,但我认为它仍然适用于 WP7 和 Silverlight(不过,如果我错了,请随时纠正我)。
所以这是我的基本设置(内存中的伪代码):
<phone.PivotItem>
<ScrollViewer>
<Grid Height="1500">
<Grid.RowDefinitions>
<!-- about 20 rows, all auto-height -->
</Grid.RowDefinitions>
<Border Grid.Row="0">
<TextBox x:Name="txt1" />
</Border>
<Border Grid.Row="1">
<TextBox x:Name="txt2" />
</Border>
<!-- ...... -->
<Border Grid.Row="19">
<TextBox x:Name="txt20" />
</Border>
</Grid>
</ScrollViewer>
</phone.PivotItem>
如您所见,我有一个ScrollViewer
within a PivotItem
,而 inside 是 a Grid
。在Grid
大约有 20TextBox
秒,每个在一个Border
. 当此页面加载时,我将焦点动态设置为其中一个TextBox
,因此无论何时我将焦点设置为TextBox
#6-20(大致) - 我必须手动向下滚动才能看到它。我想自动滚动我的ScrollViewer
,这样无论哪个TextBox
有焦点,它都会居中供用户查看。
的文档ScrollToVerticalOffset()
说:
将 ScrollViewer 中的内容滚动到指定的垂直偏移位置。
并且它接受一种System.Double
.
我不明白的是A)我应该通过的价值,以及B)我怎么能得到那个价值?它应该是介于 0 和我的Grid
(1500) 高度之间的数字吗?如果是这样,我如何确定任何给定的位置TextBox
以便滚动到它?
如果有任何简单的示例,请随时链接到它们。我不确定ScrollViewer
调用此方法时的内容是否重要,但如果确实如此,我想确切地展示我是如何使用它的。
提前谢谢了!