我想使用 C#/XAML 在 Windows 8 UI / Metro UI 应用程序中的文本框上实现自动完成。
目前,当软/触摸键盘显示时,它会遮挡自动完成框。但是,在文本框焦点上,Windows 8 会自动向上滚动整个视图并确保文本框处于焦点位置。
实际上,我想要的只是向上滚动一点的视图(实际上是自动完成框的高度)。
我意识到我可以拦截 InputPane.GetForCurrentView() 的 Showing 事件
我可以在 Showing 事件中将 InputPaneVisibilityEventArgs.EnsuredFocusedElementInView 设置为 true(这样 Windows 不会尝试做任何事情)......但是,我如何调用与 Windows 8 相同的滚动功能,但要求它滚动再多一点!?
这是主页的代码:
<Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}">
<StackPanel VerticalAlignment="Center" HorizontalAlignment="Center" Margin="0,200,0,0">
<TextBlock HorizontalAlignment="Center" FontSize="60">App 1</TextBlock>
<TextBlock HorizontalAlignment="Center">Enter text below</TextBlock>
<TextBox HorizontalAlignment="Center" Margin="-10,0,10,0" Width="400" Height="30"/>
<ListBox HorizontalAlignment="Center" Width="400">
<ListBoxItem>Auto complete item 1</ListBoxItem>
<ListBoxItem>Auto complete item 2</ListBoxItem>
<ListBoxItem>Auto complete item 3</ListBoxItem>
<ListBoxItem>Auto complete item 4</ListBoxItem>
<ListBoxItem>Auto complete item 5</ListBoxItem>
</ListBox>
</StackPanel>
</Grid>
如果您以最低分辨率启动模拟器,请用手“触摸”文本框,这将调出软键盘。在真实的应用程序中,当用户输入文本时,自动完成列表将与项目一起出现。
所以简而言之,我怎样才能将屏幕向上移动一点,以便用户可以看到整个自动完成列表?
请记住,在真正的应用程序中,情况会更糟,因为用户甚至可能没有注意到出现在键盘“下方”的自动完成列表。
我真的很感激一些建议,非常感谢!