2013-08-08 16 views
8

In unserer Windows Store App haben wir eine Textbox, und wenn die Anwendung gestartet wird, bekommen diese Textbox immer den Fokus. In einem Desktop-Szenario ist das kein Problem, aber auf einem Tablet-Gerät öffnet dieser Fokus direkt die Bildschirmtastatur, was kein gewünschtes Szenario ist.Entfernen Sie den Fokus auf die erste Textbox

Wir haben versucht, den Fokus auf ein anderes Steuerprogramm mit der .Focus (FocusState) -Methode zu setzen, aber irgendwie wird der Fokus auf die Textbox zurückgesetzt. Wir haben beide den Fokus auf die LoadState- oder die OnNavigatedTo-Methode gesetzt.

Nur wenn wir einen Timer haben, haben wir den Fokus erfolgreich auf ein anderes Steuerelement gesetzt. Hat jemand Ideen, wie man den Fokus auf ein anderes Steuerelement setzt oder lieber gar nicht auf ein Steuerelement fokussiert?

Antwort

16

Normalerweise können Sie den Fokus auf ein Element von TextBox.Focus() setzen. Allerdings habe ich die gleichen Verhaltensweisen (Autofokus beim Start) entdeckt, wenn Sie Ihre TextBox in einen ScrollViewer oder FlyOut platzieren. Dann haben Sie die IsTabStop auf das Eltern-Element zu setzen:

<ScrollViewer IsTabStop="true"> 
    <TextBox /> 
</ScrollViewer> 
+2

Es ist nicht die genaue Antwort, weil meine Textbox nicht in einem Scroll oder Flyout war. Obwohl ich es behoben habe, indem ich eine Scrollview mit IsTabStop = true vor dem Textfeld hinzugefügt habe und die Sichtbarkeit der horizontalen und vertikalen Scrollbars minimiert habe. Es ist definitiv nicht die wundervollste Lösung, aber bis ich herausgefunden habe, was es verursacht, funktioniert es! Vielen Dank! – ChristiaanV

+0

IsTabStop ist eine Control-Eigenschaft. Sie können es also auf jedes Steuerelement einstellen. Vielleicht versuchst du es einfach auf dein aktuelles Elternelement zu setzen (was auch immer es ist). –

+0

Es ist ein Raster innerhalb einer LayoutAwarePage. Gitter hat kein IsTabStop. LayoutAwarePage hat, aber das behebt es nicht. – ChristiaanV

0

IsTabStop = "true" nicht für mich arbeiten. Meine Lösung besteht darin, UpdateLayout() des scrollViewer aufzurufen, bevor Sie den Fokus auf die TextBox setzen:

scrollViewer.UpdateLayout();

textBox.Focus (Windows.UI.Xaml.FocusState.Programmatic);

0

Wenn Sie keine Antwort mit den ScrollViewer akzeptiert mögen, können Sie dies auch den Fokus zu entfernen:

_textBox.IsReadOnly = true; 
_textBox.IsReadOnly = false; 
Verwandte Themen