我创建了一个简单的测试应用程序来复制遇到的问题,但无法解决。
我有一个基本的Windows Store应用程序,在ItemsControl中包含一个平面的TextBox列表。该列表足够长,以至于当“底部文本框”具有焦点时,它会被“虚拟键盘”遮盖,并且整个视图将自动向上滚动以确保在使用键盘时该文本框可见。
但是,如果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>
最佳答案
我遇到了同样的问题,并找到了导致该问题的元素:在许多VirtualizingStackPanel
中将ItemsControls
用作默认的“项目面板”。如果将其更改为普通的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自动滚动焦点的TextBox被禁用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13220506/