如何有效隐藏Windows Phone 8.1软键盘?

时间:2014-10-31 16:36:10

标签: c# xaml windows-phone-8.1 soft-keyboard

我想在点击 Enter 键时隐藏软键盘,但没有适合我的解决方案。 (Windows Phone 8.1通用应用程序)

这个不起作用:

if (e.Key == VirtualKey.Enter)
{
    textBox.IsEnabled = false;
    textBox.IsEnabled = true;
}

这样的方法:

private void LoseFocus(object sender)
{
    var control = sender as Control;
    var isTabStop = control.IsTabStop;
    control.IsEnabled = false;
    control.IsTabStop = false;
    control.IsEnabled = true;
    control.IsTabStop = isTabStop;
}

仅部分工作。它只是在我第一次使用文本框时才隐藏键盘。第二次键盘重新出现。

3 个答案:

答案 0 :(得分:17)

有隐藏的API支持来隐藏和显示InputPane。你不需要试图伪造系统。

Windows Phone 8.1上提供了Windows.UI.ViewManagement.InputPane。TryShowTryHide方法。

另一个选项是当用户点击Enter时将焦点移动到更合适的控件。

答案 1 :(得分:9)

这是用户按下回车键时隐藏键盘的完整代码

  private void TextBox_KeyUp(object sender, KeyRoutedEventArgs e)
    {
        if(e.Key==Windows.System.VirtualKey.Enter)
        {
            Windows.UI.ViewManagement.InputPane.GetForCurrentView().TryHide();
        }
    }

答案 2 :(得分:2)

我刚刚做了类似的事情并且正在发挥作用:

private async void makeRequest(string title, int page)
    {
        myTextBox.IsEnabled = false;
        myTextBox.IsTabStop = false;
        // here is my httprequest and changing itemssource of listview
        myTextBox.IsEnabled = true;
        myTextBox.IsTabStop = true;
    }