2011-03-25 3 views
2

J'ai un TextBox qui est databound à un TreeView. Si l'élément sélectionné chnages le TextBox me montre le nom de celui-ci. Ce que je veux, c'est mettre le focus sur le TextBox si la sélection a changé et sélectionner le texte dans la TextBox.Comment définir le focus sur une zone de texte contenant des données dans WPF lorsque la sélection change?

Est-ce possible uniquement avec WPF et quand, comment?
(il n'y a pas de problème avec un événement sur le TreeView « OnSelectionChange », mais ce n'est pas la question ;-))

<TextBox Name="textBoxTitel" DataContext="{Binding ElementName=treeView, Path=SelectedItem}" /> 

Répondre

2

Il ne peut se faire en XAML en utilisant des installations seulement intégrées. À la fin, vous aurez besoin d'écrire du code, et cela ne fait aucune différence sur le nom du fichier source. Mais je vais esquisser une solution qui ne nécessitera pas de code dans votre fichier code-behind.

Derive votre propre classe MyAction de TriggerAction. Ajoutez un MyAction comme déclencheur d'événement pour Treeview.SelectedItemChanged au style de votre arborescence. En liant les propriétés de dépendance appropriées que vous définissez sur MyAction, indiquez-lui de définir le focus et de sélectionner le texte de votre zone de texte, par ex.

<ns:MyAction FocusControl="{Binding ElementName=textBox}" SelectAll="True" /> 

Au moins le code sera réutilisable.

Questions connexes