我创建了一个简单的测试应用程序来复制我遇到但无法找到解决方案的问题。 我有一个基本的 Windows 应用商店应用程序,其中包含一个包含在 ItemsControl 中的简单文本框列表。该列表足够长,当 Bottom TextBox 获得焦点时,它会被虚拟键盘遮挡,并且整个 View 将自动向上滚动以确保在使用键盘时 TextBox 可见。
但是,如果 ItemsControl 位于 FlipView 或 GridView 而不是如下所示的简单 Grid 中,则不会发生自动垂直滚动,并且底部元素仍被虚拟键盘遮挡。这似乎是由于 Parent 控件包含一个 ScrollViewer,它似乎完全覆盖了默认的有用 View 滚动行为。
问题是如何重新启用此行为?我已尝试以我自己的风格删除 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>
最佳答案
我遇到了同样的问题并找到了导致问题的元素:它是在许多 ItemsControls
中用作默认项目面板的 VirtualizingStackPanel
。如果将其更改为普通的 StackPanel
,则当虚拟键盘弹出时相应的输入控件会正确翻译。
可在此处找到详细信息:Why is my text box contained in a FlipView obscured by the soft keyboard when it pops up?
关于windows-8 - 当包含在具有 ScrollViewer(例如 FlipView)的控件中时,被 VKB 遮挡的 Windows 8 自动滚动聚焦文本框被禁用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13220506/