gpt4 book ai didi

silverlight - 如何使用ScrollViewer.ScrollToVerticalOffset?

转载 作者:行者123 更新时间:2023-12-02 21:51:27 24 4
gpt4 key购买 nike

我希望这不是重复的,但我找不到任何有关如何实际使用 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>

正如您所看到的,我在 PivotItem 中有一个 ScrollViewer,里面是一个 Grid。在 Grid 中,大约有 20 个 TextBox,每个都位于一个 Border 内。当此页面加载时,我动态地将焦点设置为这些 TextBox 之一,因此每当我将焦点设置为 TextBox #6-20 (大致)时,我都必须手动滚动下来看看吧。我想自动滚动我的 ScrollViewer ,以便无论哪个 TextBox 获得焦点,它都会居中以供用户查看。

documentation对于 ScrollToVerticalOffset() 说:

Scrolls the content that is within the ScrollViewer to the specified vertical offset position.

并且它接受 System.Double 类型。

我不明白的是 A)我应该传递的值,以及 B)我如何才能获得该值?它应该是 0 到我的网格高度 (1500) 之间的数字吗?如果是这样,我如何确定任何给定 TextBox 的位置以便我可以滚动到它?

如果有任何简单的示例,请随时链接到它们。我不确定调用此方法时 ScrollViewer 中的内容是否重要,但如果确实如此,我想准确展示我是如何使用它的。

非常感谢!

最佳答案

您可以使用 UIElement.TransformToVisual 调用查看任何 UIElement 相对于另一个 UIElement 的位置。

首先,获取 TextBox 和 ScrollViewer 之间的转换。

GeneralTransform transform = textBox.TransformToVisual(scrollViewer);

然后,找出 TextBox 相对于 ScrollViewer 的哪个点 (0,0)。意思是,TextBox 原点 (0,0) 位于 ScrollViewer 的位置。

Point textBoxPosition = transform.Transform(new Point(0, 0));

既然您知道 TextBox 相对于 ScrollViewer 的 Y 位置,请滚动到该 Y 偏移量。

scrollViewer.ScrollToVerticalOffset(textBoxPosition.Y);

祝你好运!

关于silverlight - 如何使用ScrollViewer.ScrollToVerticalOffset?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15114991/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com