如何在WinRT中打开SIP(虚拟键盘)时将TextBox置于视图中

时间:2014-04-03 15:27:21

标签: c# windows-runtime

在我的应用程序中,我有一个大标题和一些文本框,如下面的示例所示。当文本框获得焦点时,SIP(虚拟键盘)打开。现在,我可以垂直滚动页面并关闭SIP,并尝试在页面向上跳转时聚焦第一个文本框,并将文本框移动到顶部位置。如何克服这个问题?

PS:除了使用VisualTree方法之外的预期解决方案。

<StackPanel Orientation="Vertical">
    <TextBlock Text="Heading" Margin="40 60 0 0" FontSize="72" />
    <TextBox Margin="40 40 0 0" Width="300" HorizontalAlignment="Left" Height="60" TextChanged="TextBox_TextChanged"/>
    <TextBox Margin="40 40 0 0" Width="300" HorizontalAlignment="Left" Height="60"/>
    <TextBox Margin="40 40 0 0" Width="300" HorizontalAlignment="Left" Height="60"/>
    <TextBox Margin="40 40 0 0" Width="300" HorizontalAlignment="Left" Height="60"/>
    <TextBox Margin="40 40 0 0" Width="300" HorizontalAlignment="Left" Height="60"/>
</StackPanel>

滚动SIP初始图片之前 Before scrolling SIP opening image 滚动SIP初始图像后 After Scrolling SIP opening image 提前谢谢!

2 个答案:

答案 0 :(得分:1)

StackPanel放入ScrollViewer

答案 1 :(得分:0)

我有同样的问题。但最后我解决了它,我只是使用了Height属性来做到这一点。请执行以下步骤

  • 首先创建一个ScrollViewer
  • 让ScrollViewer创建一个容器(例如:Grid / StackPanel / Border等...)并将每个控件放入其中。
  • 为ScrollViewer和Container设置固定高度(注意:容器的高度应大于ScrollViewer&#39; s高度)

请参阅以下代码

<ScrollViewer Height="500">
        <Grid Name="Container" Height="700">
            <TextBox/>
            <TextBox/>
            <TextBox/>
        </Grid>
</ScrollViewer>

现在您可以滚动容器Grid甚至显示的KeyBoard,甚至可以将焦点放在TextBox上。