2014-10-31 10 views
6

Ich möchte die Soft-Tastatur ausblenden, wenn die Enter Schlüssel angezapft wird, aber keine Lösungen funktionieren für mich richtig. (Windows Phone 8.1 Universal-App)Wie kann Windows Phone 8.1 Soft-Tastatur effektiv versteckt werden?

Dieses funktioniert einfach nicht:

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

Verfahren wie folgt aus:

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

Werke teilweise nur. Es versteckt die Tastatur nur, wenn ich zum ersten Mal die Textbox benutze. Beim zweiten Mal erscheint die Tastatur wieder.

+0

dass Denken Sie daran, wenn Sie 'IsEnabled' ausschalten und wieder in der gleichen Methode, wird das Formular nicht registrieren Ihre ändert sich bis _nach dem Abschluss der Methode. Sie können den Wert beliebig innerhalb der Methode umschalten, aber nur das Ergebnis nach der Funktion ist wichtig. – gunr2171

Antwort

2

Ich habe gerade so etwas wie das und es funktioniert:

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

Es gibt eine direkte API-Unterstützung zu verstecken und die InputPane zu zeigen. Sie müssen nicht versuchen, das System zu fälschen.

Das Windows.UI.ViewManagement.InputPane. TryShow und TryHide Methoden sind auf Windows Phone 8.1 verfügbar.

Die andere Option wäre, den Fokus auf ein geeigneteres Steuerelement zu verschieben, wenn der Benutzer Enter drückt.

+0

Dadurch wird die Tastatur nicht mehr angezeigt, wenn ich erneut auf das Textfeld klicke ... – Denny

9

Dies ist der vollständige Code um die Tastatur auszublenden, wenn der Benutzer drücken Sie die Enter-Taste

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