wpf problème avec la mise au point
Hi
Je ne suis pas capable de mettre l'accent sur le parent de contrôle. J'ai un contrôle qui est mis sur la toile.
Si je clique sur que le contrôle de ce que je dois mettre l'accent sur la toile, afin de gérer certains événements de clavier.
Cependant, malgré le fait que je tente de mettre l'accent comme ça
protected override void OnPreviewMouseDown(MouseButtonEventArgs e)
{
base.OnPreviewMouseDown(e);
Canvas designer = VisualTreeHelper.GetParent(this) as Canvas;
designer.Focus() ;//this doesn't work
Keyboard.Focus(designer); //this also doesn't work
}
Les événements de clavier qui sont connectés à la toile de ne pas tirer.
Qu'advient-il si vous déplacez la base.OnPreviewMouseDown(e) appels vers le bas en dessous du reste de l'appel?
OriginalL'auteur george | 2010-10-11
Vous devez vous connecter pour publier un commentaire.
Assurez-vous que la Toile a Peut recevoir le focus et IsEnabled à la fois la valeur true. Sans cela, Focus() échouera. De Focus() docs:
En outre, puisque vous êtes en train de faire cela dans un PreviewMouseDown cas, vous pouvez avoir besoin de retravailler votre méthode comme suit:
Est Focus() qui renvoie true?
Oui, il a renvoyé true
Fonctionne très bien 🙂 Pourriez-Vous me dire pourquoi vous appelez de la base.OnPreviewMouseDown(e), en tant que dernière méthode ?
Content d'avoir pu aider. Bienvenue sur StackOverflow 😉
OriginalL'auteur Reed Copsey
Utiliser la classe FocusManager ensemble de la toile comme un champ d'application. Il est un bon exemple de comment faire ici: Ne pouvez pas définir le focus à un enfant de UserControl.
OriginalL'auteur Trevor
- Je utiliser Mon UserControl avec l'attribut: Background="Transparent".
Je ne sais pas pourquoi. J'avais lu cela dans une autre question. Mais je ne me souviens pas où.
OriginalL'auteur wishmaster35