silverlight – 如何使用ScrollViewer.ScrollToVerticalOffset?

silverlight – 如何使用ScrollViewer.ScrollToVerticalOffset?,第1张

概述我希望这不是重复,但我找不到任何关于如何实际使用ScrollToVerticalOffset()的文档或示例.我在 Windows Phone 8应用程序中使用它,但我认为它仍然适用于WP7和Silverlight(尽管如果我错了,请随时纠正我). 所以这是我的基本设置(来自内存的伪代码): <phone.PivotItem> <ScrollViewer> <Grid Heigh 我希望这不是重复,但我找不到任何关于如何实际使用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,每个TextBox都在border中.当这个页面加载时,我动态地将焦点设置到这些TextBox之一,所以任何时候我将焦点设置为TextBox#6-20(粗略地) – 我必须手动向下滚动才能看到它.我想自动滚动我的ScrollVIEwer,以便无论哪个TextBox都有焦点,它都会居中以供用户查看.

ScrollToVerticalOffset()的documentation说:

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?全部内容,希望文章能够帮你解决silverlight – 如何使用ScrollViewer.ScrollToVerticalOffset?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/1000968.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-21
下一篇2022-05-21

发表评论

登录后才能评论

评论列表(0条)

    保存