Malgré certains messages sur ce forum et d'autres, je ne trouve pas quelque chose qui me dise comment mettre l'accent sur un TextBox
.
J'ai un userControl avec de nombreuses étiquettes et textBoxes. Lorsque le formulaire est chargé, je veux qu'une zone de texte particulière ait le focus.
J'ai défini le tabIndex mais cela ne semble pas fonctionner.
Aucune suggestion?
Réponses:
Vous pouvez utiliser la
FocusManager.FocusedElement
propriété ci-jointe à cette fin. Voici un morceau de code qui définit le focus sur TxtB par défaut.Vous pouvez également utiliser
TxtB.Focus()
dans votre code-behind si vous ne souhaitez pas le faire en XAML.la source
FocusManager
truc). En fin de compte, je l'ai fait dans le code-behind.Vous pouvez appliquer cette propriété directement sur la zone de texte:
la source
Je suis nouveau dans l'utilisation de WPF et en lisant les exemples ci-dessus, j'ai eu une expérience similaire en essayant de définir le focus sur une zone de texte en utilisant les exemples de code xaml donnés, c'est-à-dire que tous les exemples ci-dessus n'ont pas fonctionné.
Ce que j'ai trouvé, c'est que je devais placer le FocusManager.FocusElement dans l'élément de page. Je suppose que cela fonctionnerait probablement aussi bien si vous utilisiez une fenêtre comme élément parent. Bref, voici le code qui a fonctionné pour moi.
la source
liez l'élément sur lequel vous souhaitez mettre le focus en tant que
dans la grille ou la groupbox etc.
la source
Nov 11 '14
". Il a été depuis longtemps avant Adam a posté son commentaire :)FocusManager n'était pas dans l'intellisense et cela m'a un peu dérouté. J'ai juste tapé l'attribut entier et cela a fonctionné.
FocusManager.FocusedElement = "{Nom de l'élément de liaison = MyTextBox}"
Microsoft Visual Studio Enterprise 2015 version 14.0.23107.0/C#/WPF
la source
Pour être complet, il existe également un moyen de gérer cela à partir du code derrière (par exemple dans le cas de contrôles qui, pour une raison quelconque, sont créés dynamiquement et n'existent pas en XAML). Attachez un gestionnaire à l'événement Loaded de la fenêtre, puis utilisez la méthode ".Focus ()" du contrôle souhaité. Exemple de bare-bones ci-dessous.
la source
De l'expérimentation autour, la solution xaml
semble fonctionner mieux lorsque vous le placez dans l'élément le plus élevé de la hiérarchie de la fenêtre (généralement Window, ou la grille dans laquelle vous placez tout le reste)
la source
Usage:
local:FocusManager.FocusOnLoad="True"
la source
J'ai une zone de texte dans une grille à l'intérieur d'un DataTemplate que je veux avoir le focus clavier quand il devient visible. J'ai aussi trouvé que
N'a pas travaillé pour moi.
Cependant, lorsque j'appelle Focus () dans le ContentControl parent
il commence à fonctionner et le curseur est visible dans la zone de texte. Je pense que le FocusScope doit avoir le focus pour que la propriété FocusManager.FocusedElement ait un effet.
Jerry
la source