如何获得键盘建议栏Windows Phone 8的高度?

时间:2014-09-17 09:29:15

标签: c# xaml windows-phone-8

目前我正在使用Windows Phone 8。

当文本框在弹出窗口中获得焦点时,它会隐藏在键盘下方。我试过从弹出窗口的VerticalOffset中减去键盘高度。但由于键盘的建议栏,文本框仍隐藏在键盘下方。有没有办法获得键盘建议栏的高度?

感谢!!!

1 个答案:

答案 0 :(得分:5)

不在Windows Phone 8 Silverlight应用中

如果您升级到Windows Phone 8.1 Silverlight应用程序(或运行时,但这是一个更大的更新),那么您可以使用InputPane类并在Showing事件中检查其OccludedRect属性。

只要键盘改变了它所覆盖的内容,它就会触发,因此当键盘首次打开时,您将获得一次事件,然后当建议栏向上滑动时,您将再次获得该事件。

protected override void OnNavigatedTo(NavigationEventArgs e)
{
    Windows.UI.ViewManagement.InputPane.GetForCurrentView().Showing += MainPage_Showing;
    Windows.UI.ViewManagement.InputPane.GetForCurrentView().Hiding += MainPage_Hiding;

}

protected override void OnNavigatedFrom(NavigationEventArgs e)
{
    Windows.UI.ViewManagement.InputPane.GetForCurrentView().Showing -= MainPage_Showing;
    Windows.UI.ViewManagement.InputPane.GetForCurrentView().Hiding -= MainPage_Hiding;

}
void MainPage_Hiding(Windows.UI.ViewManagement.InputPane sender, Windows.UI.ViewManagement.InputPaneVisibilityEventArgs args)
{
    Debug.WriteLine("Hiding and occluding {0}", sender.OccludedRect.Height);
}

void MainPage_Showing(Windows.UI.ViewManagement.InputPane sender, Windows.UI.ViewManagement.InputPaneVisibilityEventArgs args)
{
    Debug.WriteLine("Showing and occluding {0}", sender.OccludedRect.Height);
}

根据您的布局,WP8.1可能不需要这样做。我在WP8.1模拟器上测试了一个WP8应用程序,弹出窗口中的TextBoxes滑出了建议栏的方式以及键盘的方式。如果您的布局足够复杂而无法工作(例如,如果您还需要在焦点TextBox下方移动内容),那么您可以处理显示以自行移动内容然后设置InputPaneVisibilityEventArgs.EnsuredFocusedElementInView以使InputPane也不会移动东西。