Je souhaite que le gestionnaire PreviewTextInput crée un nouveau contrôle et que le focus soit défini. Mais même après avoir appelé Focus() sur le nouveau contrôle, le curseur est toujours dans l'ancienne zone de texte. Le gestionnaire UserControl_PreviewTextInput est enregistré sur UserControl qui contient cette zone de texte si cela est important.WPF: Impossible de définir le focus
private void UserControl_PreviewTextInput(object sender, TextCompositionEventArgs e)
{
CodeLineControl el = new CodeLineControl();
container.Children.Insert(idx+1, el);
el.innerTextBox.Focus();
}
CodeLineControl est défini comme (simplifié):
<UserControl ..>
<DockPanel Name="codeline" Background="AntiqueWhite" >
<TextBox Name="innerTextBox"/>
</DockPanel>
</UserControl>
Y at-il des limites à mise au point() qui ne Iam Awre au sujet? Ne suis-je pas autorisé à déplacer Focus() loin d'un TextBox à partir d'un gestionnaire PreviewTextInput? Je ne peux pas mettre l'accent sur les éléments nouvellement créés?
Pourquoi cela est-il nécessaire? J'ai ajouté le nouveau contrôle à l'interface graphique afin qu'il soit visible et focalisable. – codymanix
Je pense qu'il est rendu de manière asynchrone dans un thread séparé et vous ne pouvez pas vous concentrer dessus tant que cela n'est pas terminé. Ou, il se peut que, après l'ajout d'un nouveau contrôle, WPF change le focus lui-même. Peut-être que l'événement LostFocus est viré à un moment donné? Vous pouvez écrire un fichier journal pour voir quels contrôles obtiennent/perdent le focus. http://www.julmar.com/blog/mark/PermaLink,guid,6e4769e5-a0b3-47b2-a142-6dfefd0c028e.aspx –