我创建了一个简单的测试应用程序来复制我看到但无法找到解决方案的问题。我有一个基本的 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>