2014-10-31 68 views
6

我想隱藏軟鍵盤,當輸入鑰匙被挖掘,但沒有解決方案適合我。 (Windows Phone的8.1通用的應用程序)如何有效隱藏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; 
} 

作品只有部分。它僅在我第一次使用文本框時隱藏鍵盤。第二次鍵盤重新出現。

+0

請記住,如果你在同樣的方法把'IsEnabled'並重新打開時,窗體不會註冊的鍵盤輸入直到_方法完成後纔會更改。您可以在方法內切換所需的全部值,但只有函數完成後的結果纔是最重要的。 – gunr2171 2014-10-31 16:44:38

回答

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

有直接的API支持,隱藏和顯示InputPane。您不需要嘗試僞裝系統。

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

另一種選擇是在用戶點擊Enter時將焦點移動到更合適的控件上。

+0

當我再次點擊文本框時,這將停止鍵盤再次顯示... – Denny 2016-09-17 20:11:11

9

這是完整的代碼隱藏,當用戶按下回車鍵

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