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

标签 c# xaml windows-phone-8

目前我正在使用 Windows Phone 8。

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

谢谢!!!

最佳答案

不在 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 应用程序,我的 Popup 中的文本框滑出了建议栏的方式以及键盘的方式。如果您的布局足够复杂而无法正常工作(例如,如果您还需要将内容移动到焦点文本框下方),那么您可以自己处理 Showing 来移动内容,然后设置 InputPaneVisibilityEventArgs.EnsuredFocusedElementInView 让 InputPane 也不要移动内容本身。

关于c# - 如何获得Windows Phone 8键盘建议栏的高度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25886907/

相关文章:

c# - Windows Phone 8 文本 block

c# - 同一张表中的两个一对多关系

c# - 单元测试在 System.Net.Http v4 中使用 HttpClient 的类

c# - 将 typeof 作为参数传递给来自 xaml 的命令

c# - 在 C++ 中为 Windows Phone 8 使用 C# dll

c# - Windows Phone,导航到音乐播放器

c# - 处理源自线程的错误的标准方法

C#WPF获取 ListView 的多选行的值

.net - 我的图像很模糊!为什么 WPF 的 SnapsToDevicePixels 不起作用?

wpf - 使用小数分隔符格式化 XAML 中的值?