【问题标题】:Silverlight 4 Page Scroll on TAB hitSilverlight 4 Page Scroll on TAB hit
【发布时间】:2011-03-03 15:20:26
【问题描述】:

大家好, 我有一个 silverlight Navigation 应用程序,在我的一个页面上,我有一个表格要由最终用户填写,其中有几个 TextBox 要填写,问题是当我按 TAB 键移动到下一个TextBox 光标确实按顺序移动到下一个TextBox,但页面不会向下滚动到新的TextBox,所以即使光标在那里我也看不到TextBox....有人知道解决方案吗? 感谢您的帮助。

谢谢你, 卜拉欣

【问题讨论】:

    标签: silverlight silverlight-4.0


    【解决方案1】:

    这是测试 XAML:

    <ScrollViewer x:Name="scrollViewer">
        <StackPanel x:Name="stackPanel"
                    Orientation="Vertical">
    
            <TextBox Width="100"
                     Text="#1"
                     GotFocus="TextBox_GotFocus" />
    
            <Rectangle Fill="AliceBlue"
                       Width="100"
                       Height="400" />
    
            <TextBox Width="100"
                     Text="#2"
                     GotFocus="TextBox_GotFocus" />
    
            <Rectangle Fill="AliceBlue"
                       Width="100"
                       Height="400" />
    
            <TextBox Width="100"
                     Text="#3"
                     GotFocus="TextBox_GotFocus" />
        </StackPanel>
    </ScrollViewer>
    

    “TextBox_GotFocus”事件的代码:

    private void TextBox_GotFocus(object sender, RoutedEventArgs e)
    {
        GeneralTransform gt = ((TextBox)sender).TransformToVisual(this);
        Point textBoxPositionRelativeToControl = gt.Transform(new Point(0, 0));
    
        if (textBoxPositionRelativeToControl.Y > this.ActualHeight
            || textBoxPositionRelativeToControl.Y < this.ActualHeight)
        {
            gt = ((TextBox)sender).TransformToVisual(stackPanel);
            Point textBoxPositionRelativeToStackPanel = gt.Transform(new Point(0, 0));
    
            scrollViewer.ScrollToVerticalOffset(textBoxPositionRelativeToStackPanel.Y - this.ActualHeight / 2);
        }
    }
    

    更新了代码,如果文本框在可见区域之外,则滚动查看器将隐藏文本框居中;否则,什么也不会发生。如果您切换到下一个或上一个文本框(shift + tab),则可以使用。

    【讨论】:

    • 这仅在页面上的silverlight区域完全可见时才有效,否则您还必须滚动网页...
    • 是的,我认为在他的情况下,SL 区域在页面上完全可见。
    • 使用这种方法是一个很好的主意。但是,当我使用鼠标单击控件时,网页会滚动。它不应该是这样的。你能帮我改一下代码吗,让网页只在控件不可见时滚动。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-24
    • 2022-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多