So legen Sie den Fokus auf ein TextBox
Element in WPF fest
Ich habe diesen Code:
txtCompanyID.Focusable = true;
txtCompanyID.Focus();
... aber es funktioniert nicht.
Irgendeine Idee?
In XAML:
<StackPanel FocusManager.FocusedElement="{Binding ElementName=Box}">
<TextBox Name="Box" />
</StackPanel>
Bisher hat niemand erklärt, warum der Code in der Frage nicht funktioniert. Ich vermute, dass der Code im Konstruktor des Fensters platziert wurde. Zu diesem Zeitpunkt ist es jedoch noch zu früh, um den Fokus festzulegen. Dies muss erfolgen, sobald das Fenster für die Interaktion bereit ist. Der beste Ort für den Code ist das Loaded-Ereignis:
quelle
Focus()
txtCompanyId.Focus(FocusState.Keyboard)
Versuchen Sie es mit FocusManager.SetFocusedElement
quelle
msdn:
Sie können nach der Einstellungszeile brechen und den Wert der
IsKeyboardFocused
Eigenschaft überprüfen . Überprüfen Sie auch, ob Sie diese Linie wirklich erreichen, oder stellen Sie ein anderes Element ein, um danach den Fokus zu erhalten.quelle
Versuche dies :
MyTextBox.Focus ( );
quelle
Nichts davon funktionierte für mich, da ich eher ein Raster als ein StackPanel verwendete.
Ich habe endlich dieses Beispiel gefunden: http://spin.atomicobject.com/2013/03/06/xaml-wpf-textbox-focus/
und modifizierte es zu diesem:
Im Abschnitt "Ressourcen":
In meiner Gitterdefinition:
quelle
Falls Sie bei den anderen Antworten keine Lösung gefunden haben, habe ich das Problem auf diese Weise gelöst.
Soweit ich weiß, funktionieren die anderen Lösungen möglicherweise nicht, da der Aufruf von
Focus()
aufgerufen wird, bevor die Anwendung die anderen Komponenten gerendert hat.quelle
Eine andere mögliche Lösung ist die Verwendung von FocusBehavior, das vom kostenlosen DevExpress MVVM Framework bereitgestellt wird :
Sie können ein Steuerelement fokussieren, wenn es geladen wird, wenn ein bestimmtes Ereignis ausgelöst oder eine Eigenschaft geändert wird.
quelle