2010-01-29 7 views
3

Dans Forms, je peux simplement utiliser ActiveControl.name pour obtenir le nom du contrôle actif. Cependant, dans WPF, cela ne fonctionne pas. Quelle est la commande WPF équivalente à Activecontrol.name? Je vais prendre C# ou VB, de toute façon. Je vous remercie!WPF équivalent à ActiveControl?

Répondre

2

Il y a deux possibilités si je ne suis pas sûr, soit une correspondance exacte pour ActiveControl:

  • Keyboard.FocusedElement: ce membre statique vous indique quel élément a le focus du clavier dans l'application en cours
  • FocusManager.GetFocusedElement(): ceci vous permet d'obtenir l'élément focalisé dans une portée de focus donnée. Notez que ceci ne peut pas être utilisé sur des contrôles arbitraires, uniquement sur des contrôles qui sont des étendues de focus (c'est-à-dire que FocusManager.IsFocusScope a la valeur true).

Est-ce que l'un de ces sons ressemble à ce que vous voulez?

+0

Oui Je recherche tout ce qui a le focus sur le clavier. Donc je suppose que Keyboard.FocusedElement est ce que je cherche. J'ai essayé de l'utiliser, mais je n'arrive pas à le faire fonctionner comme dans console.write (keyboard.focusedelement.name). Qu'est-ce que je fais mal? Je vous remercie! –

+1

Avez-vous une erreur? Ou rien ne se passe? Qu'est-ce que Keyboard.FocusedElement (essayez d'écrire son GetType(). Name à la place)? L'élément a-t-il un nom ou un ensemble de x: nom? (Contrairement aux Windows Forms, le concepteur WPF ne donne pas les noms des éléments par défaut.) – itowlson

+1

Les éléments (toutes les zones de texte) ont des x: Noms. J'essaie de déterminer le nom de la zone de texte a le focus du clavier (comme ce que ActiveControl.Name fait pour les formulaires). J'ai essayé Console.Write (Keyboard.FocusedElement.GetType(). Name) et j'obtiens "Référence d'objet non définie à une instance d'un objet" que je suppose devrait être "Window1" (le x: Nom de la fenêtre). Merci de votre aide. –