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

6
我可以帮您翻译成中文。需要隐藏软键盘,当点击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;
}

该功能只部分有效。仅在我第一次使用文本框时隐藏键盘。第二次使用时,键盘会重新出现。


请记住,如果您在同一个方法中关闭并重新启用 IsEnabled,则表单直到该方法完成后才会注册您的更改。您可以在方法内随意切换该值,但只有函数完成后的结果才是重要的。 - gunr2171
3个回答

17

有直接的API支持来隐藏和显示InputPane。您不需要试图欺骗系统。

Windows.UI.ViewManagement.InputPane.TryShowTryHide方法在Windows Phone 8.1上可用。

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


9
这是完整的代码,用于在用户按下回车键时隐藏键盘。
  private void TextBox_KeyUp(object sender, KeyRoutedEventArgs e)
    {
        if(e.Key==Windows.System.VirtualKey.Enter)
        {
            Windows.UI.ViewManagement.InputPane.GetForCurrentView().TryHide();
        }
    }

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;
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接