Trotz einiger Beiträge in diesem Forum und anderer kann ich nichts finden, das mir sagt, wie ich den Fokus auf a setzen soll TextBox
.
Ich habe ein userControl mit vielen Beschriftungen und Textfeldern. Wenn das Formular geladen wird, soll die bestimmte Textbox den Fokus haben.
Ich habe den tabIndex eingestellt, aber das schien nicht zu funktionieren.
Irgendwelche Vorschläge?
Antworten:
Sie können die
FocusManager.FocusedElement
angehängte Eigenschaft für diesen Zweck verwenden. Hier ist ein Code, der den Fokus standardmäßig auf TxtB setzt.Sie können es auch
TxtB.Focus()
in Ihrem Code-Behind verwenden, wenn Sie dies in XAML nicht möchten.quelle
FocusManager
Zeug abgelegt habe ). Am Ende habe ich es im Code-Behind gemacht.Sie können diese Eigenschaft direkt auf die TextBox anwenden:
quelle
Ich bin neu in der Verwendung von WPF und habe die obigen Beispiele gelesen. Ich hatte eine ähnliche Erfahrung damit, den Fokus auf ein Textfeld zu legen, indem ich die angegebenen xaml-Codebeispiele verwendete, dh alle oben genannten Beispiele funktionierten nicht.
Ich fand, dass ich den FocusManager.FocusElement im Seitenelement platzieren musste. Ich gehe davon aus, dass dies wahrscheinlich auch funktionieren würde, wenn Sie ein Fenster als übergeordnetes Element verwenden würden. Wie auch immer, hier ist der Code, der für mich funktioniert hat.
quelle
Binden Sie das Element, auf das Sie den Fokus richten möchten
im Raster oder in der Gruppenbox usw.
quelle
Nov 11 '14
". Er war lange weg, bevor Adam seinen Kommentar gepostet hat :)FocusManager war nicht in Intellisense und das verwirrte mich ein bisschen. Ich habe gerade das gesamte Attribut eingegeben und es hat funktioniert.
FocusManager.FocusedElement = "{Binding ElementName = MyTextBox}"
Microsoft Visual Studio Enterprise 2015 Version 14.0.23107.0/C#/WPF
quelle
Der Vollständigkeit halber gibt es auch eine Möglichkeit, dies anhand des dahinter stehenden Codes zu handhaben (z. B. bei Steuerelementen, die aus irgendeinem Grund dynamisch erstellt werden und in XAML nicht vorhanden sind). Fügen Sie dem Loaded-Ereignis des Fensters einen Handler hinzu und verwenden Sie dann die Methode ".Focus ()" des gewünschten Steuerelements. Beispiel für nackte Knochen unten.
quelle
Aus dem Experimentieren die Xaml-Lösung
scheint am besten zu funktionieren, wenn Sie es im höchsten Element der Fensterhierarchie platzieren (normalerweise Fenster oder das Raster, in dem Sie alles andere platzieren).
quelle
Verwendung:
local:FocusManager.FocusOnLoad="True"
quelle
Ich habe eine Textbox in einem Raster in einer DataTemplate, auf die ich den Tastaturfokus setzen möchte, wenn sie sichtbar wird. Das habe ich auch gefunden
hat bei mir nicht funktioniert.
Wenn ich jedoch Focus () im übergeordneten ContentControl aufrufe
es beginnt zu arbeiten und das Caret ist in der TextBox sichtbar. Ich denke, das FocusScope muss fokussiert werden, damit die FocusManager.FocusedElement-Eigenschaft einen Effekt hat.
Jerry
quelle