如何使Silverlight ScrollViewer滚动显示一个有焦点的子控件?

如何使Silverlight ScrollViewer滚动显示一个有焦点的子控件?,第1张

概述我有一个ScrollViewer,其中包含一个具有多个控件的网格.用户可以通过控件进行标签,但是最终他们会选中一个不在视图中的控件 – 所以他们必须通过滚动来使控件再次可见. 是否有任何方法使ScrollViewer自动滚动,使聚焦的控件始终可见.没有,有什么办法可以使这项工作,不听每个控件上的GotFocus事件,然后滚动ScrollViewer使控件可见? 目前我正在使用Silverlight 我有一个ScrollVIEwer,其中包含一个具有多个控件的网格.用户可以通过控件进行标签,但是最终他们会选中一个不在视图中的控件 – 所以他们必须通过滚动来使控件再次可见.

是否有任何方法使ScrollVIEwer自动滚动,使聚焦的控件始终可见.没有,有什么办法可以使这项工作,不听每个控件上的GotFocus事件,然后滚动ScrollVIEwer使控件可见?

目前我正在使用Silverlight 2.

解决方法 我使用Silverlight 3测试了这个.我不知道SL2.

这是我的XAML:

<ScrollVIEwer Height="200" WIDth="200" KeyUp="ScrollVIEwer_KeyUp">    <StackPanel>        <button Content="1" Height="20" />        <button Content="2" Height="20" />        <button Content="3" Height="20" />        <button Content="4" Height="20" />        <button Content="5" Height="20" />        <button Content="6" Height="20" />        <button Content="7" Height="20" />        <button Content="8" Height="20" />        <button Content="9" Height="20" />    <button Content="10" Height="20" />        <button Content="11" Height="20" />        <button Content="12" Height="20" />        <button Content="13" Height="20" />        <button Content="14" Height="20" />        <button Content="15" Height="20" />        <button Content="16" Height="20" />        <button Content="17" Height="20" />        <button Content="18" Height="20" />        <button Content="19" Height="20" />        <button Content="20" Height="20" />    </StackPanel></ScrollVIEwer>

这是代码隐藏:

private voID ScrollVIEwer_KeyUp(object sender,KeyEventArgs e){    ScrollVIEwer scrollVIEwer = sender as ScrollVIEwer;    FrameworkElement focusedElement = FocusManager.GetFocusedElement() as FrameworkElement;    Generaltransform focusedVisualtransform = focusedElement.transformToVisual(scrollVIEwer);    Rect rectangle = focusedVisualtransform.transformBounds(new Rect(new Point(focusedElement.margin.left,focusedElement.margin.top),focusedElement.RenderSize));    double newOffset = scrollVIEwer.VerticalOffset + (rectangle.Bottom - scrollVIEwer.VIEwportHeight);    scrollVIEwer.ScrollToVerticalOffset(newOffset);}

我做的是点击按钮#1和标签,直到我到达按钮#20.它为我工作尝试一下,让我知道它对你有用.

总结

以上是内存溢出为你收集整理的如何使Silverlight ScrollViewer滚动显示一个有焦点的子控件?全部内容,希望文章能够帮你解决如何使Silverlight ScrollViewer滚动显示一个有焦点的子控件?所遇到的程序开发问题。

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

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

原文地址: http://outofmemory.cn/web/1003564.html

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

发表评论

登录后才能评论

评论列表(0条)

保存