3

我创建了一个简单的测试应用程序来复制我看到但无法找到解决方案的问题。我有一个基本的 Windows 应用商店应用程序,其中包含一个包含在 ItemsControl 中的文本框的平面列表。该列表足够长,当底部文本框具有焦点时,它会被虚拟键盘遮挡,整个视图将自动向上滚动以确保文本框在使用键盘时可见。

但是,如果 ItemsControl 托管在 FlipView 或 GridView 而不是如下所示的简单 Grid 中,则不会发生自动垂直滚动,并且底部元素仍然被虚拟键盘遮挡。这似乎是因为 Parent 控件包含一个 ScrollViewer,它似乎完全覆盖了默认的有用视图滚动行为。

问题是如何重新启用此行为?我曾尝试以我自己的风格移除 ScrollViewer,这很有效,但也意味着 FlipView 不再用作 FlipView。

<Grid>
        <ItemsControl Width="200">
            <TextBox Text="Test"></TextBox>
            <TextBox Text="Test"></TextBox>
            <TextBox Text="Test"></TextBox>
            <TextBox Text="Test"></TextBox>
            <TextBox Text="Test"></TextBox>
            <TextBox Text="Test"></TextBox>
            <TextBox Text="Test"></TextBox>
            <TextBox Text="Test"></TextBox>
            <TextBox Text="Test"></TextBox>
            <TextBox Text="Test"></TextBox>
            <TextBox Text="Test"></TextBox>
            <TextBox Text="Test"></TextBox>
            <TextBox Text="Test"></TextBox>
            <TextBox Text="Test"></TextBox>
            <TextBox Text="Test"></TextBox>
            <TextBox Text="Test"></TextBox>                
            <TextBox Text="Hidden by VKD"></TextBox>            
        </ItemsControl>       
</Grid>
4

2 回答 2

1

我遇到了同样的问题,并找到了导致问题的元素:它VirtualizingStackPanel在许多ItemsControls中用作默认项目面板。如果将其更改为 normal StackPanel,则在弹出虚拟键盘时会正确转换相应的输入控件。

详情可以看这里:为什么我的FlipView中包含的文本框在弹出时被软键盘遮住了?

于 2015-04-15T22:03:07.360 回答
-1

当键盘出现时,也许你可以自己移动你的文本框?这个样本看起来很有希望:

响应屏幕键盘示例的外观

于 2012-11-05T04:09:42.940 回答