Bonjour,
Je travaille sur une application WPF (utilisant MVVM Light) et je rencontre un problème au niveau de la gestion du focus.
Pour résumer les choses simplements, l'écran principale de l'application est composé de deux parties :
- A gauche, un menu de boutons.
- A droite, l'écran du menu sélectionné.
La seule petite subtilité, c'est que j'utilise des Control imbriqués.
En gros, j'ai ma fenetre principale (MainWindow qui est une Window) dans laquelle j'ai déclaré dans le XAML pour la partie gauche :
Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 <ContentControl Content="{Binding CurrentViewModel.MenuView, Mode=OneWay}" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" ScrollViewer.HorizontalScrollBarVisibility="Auto" ScrollViewer.VerticalScrollBarVisibility="Auto"/>
Et pour la partie droite :
Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 <ContentControl Content="{Binding CurrentViewModel.View, Mode=OneWay}" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch"/>
Le CurrentViewModel.View fait en fait référence à un UserControl Main (qui varie selon le menu sélectionné).
Dans le Main (qui est un UserControl), j'ai déclaré dans le XAML ceci :
Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 <ContentControl Content="{Binding CurrentScreen.View}" Grid.Row="1" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch"> </ContentControl>
Car là aussi, l'affichage peut varier selon un Sous Menu choisi.
Enfin, on a un dernier UserControl (qui est référencé par CurrentScreen.View donc) et qui s'affichera donc dans le ContentControl du Main.
Dans ce dernier UserControl, j'ai tous mes éléments importants (List, boutons, ...).
Je souhaite qu'une TextBox de cet UserControl ait le focus. J'ai donc indiqué dans le code behind ceci :
Quand je lance l'application, que je clique sur le menu de gauche pour faire apparaitre la fenetre, l'écran apparait bien mais le champ texte n'a pas le focus.
Code : Sélectionner tout - Visualiser dans une fenêtre à part TextBox1.Focus()
En fait, le focus reste sur le bouton sur lequel je viens de cliquer (si je fais Tab, je vois que je suis tjrs dans la partie gauche de l'écran).
Mais je peux également remarquer sur le champ Text laisse apparaitre une petite barre verticale fixe. On dirait qu'il a le focus au niveau de son UserControl mais que le UserControl en lui même n'a pas le focus. C'est assez bizarre.
J'ai essayé pas mal de truc mais je vois pas comment donner le focus à ce champ pour que l'utilisateur puisse directement saisir du texte dedans (sans avoir à cliquer dessus).
J'espère que mes explications ont été claires et que quelqu'un sera en mesure de me venir en aide.
Merci d'avance.
Partager