2010-07-13 4 views
2

Si j'ai des problèmes avec WPF, cela concerne toujours la gestion de focus. Il y a des cas, mon application perd totalement la mise au point pour qu'une autre application obtienne l'attention et mon application passe en arrière-plan. Cela arrive principalement si certaines fenêtres de mon application seront fermées. Est-ce un problème connu de WPF. Est-ce que quelqu'un d'autre a des problèmes similaires?Mise au point instable des applications WPF

J'ai déjà ouvert another thread à cela, mais personne ne pouvait aider, peut-être que c'était un peu trop détaillé. Par conséquent, voici la version courte.

MISE À JOUR

Il semble que j'ai trouvé simple hack qui aide à prévenir le comportement que je décris dans le other thread. Si vous avez le même problème, essayez si cela vous aide. Si vous avez une explication, il ya une prime ouverte pour ...

Je laisse ce post ouvert pendant quelques jours, peut-être que quelqu'un a une bonne idée générale de la problématique WPF-focus. Probablement je ne comprends pas la logique derrière cela, mais jusqu'à ce que je comprenne, c'est IMO vraiment la plus mauvaise partie de WPF (quel IMO est un produit vraiment fantastique). Si je dois dire à quelqu'un avec ce que j'ai eu des problèmes les dernières années dans WPF, ce serait: Focusmgmt, Focusmgmt, et une fois de plus Focusmgmt.

+0

WAG ici: Changez votre clavier/souris. Si vous avez un écran tactile, recherchez des clics fantômes chez le fabricant. Si vous êtes sur un ordinateur portable, mettez à jour vos pilotes de pad ou désactivez-le complètement. – Will

Répondre

2

Pour perdre le focus pour l'application entière assurez-vous de définir la propriété Owner sur toutes les fenêtres avant de les afficher. Pour perdre le focus à l'intérieur de l'application, cela arrive généralement quand un contrôle auquel vous n'avez pas pensé n'obtient rien (par exemple StackPanel ou Grid utilisé pour la mise en page), vous devez les traquer et ajouter Focusable="false"

+0

Merci pour le conseil. J'ai double vérifié cela mais j'ai toujours mis le propriétaire avant de montrer la fenêtre. J'ai également essayé de définir le propriétaire comme la première propriété absolue après la construction de la fenêtre, mais cela n'aide pas. – HCL

+0

J'ai accepté votre réponse parce que c'était au moins un essai. Si vous êtes intéressé par une solution, voir mes modifications sur le post - Merci pour la réponse – HCL

1

+1 Comme j'ai également fait face à des problèmes similaires dans mon application. Je travaille sur une application VS like (l'utilisateur peut ajouter (à partir de la boîte à outils) et configurer les contrôles dans un Canvas) et le focus est perdu mystérieusement après que diverses commnads sont exécutées comme Delete etc. Je dois utiliser Canvas.Focus() explicitement pour réinitialiser le focus et cela aussi ne fonctionne pas parfois.