Come è possibile acquisire l'elemento/controllo attualmente attivato in WPF dal codice che non fa parte né di una finestra né di un controllo utente?Ottenere elemento/controllo attualmente focalizzato in una finestra WPF
48
A
risposta
86
Dipende dal tipo di messa a fuoco che si sta cercando, Logical
o Keyboard
.
tastiera fuoco riferisce all'elemento che riceve input da tastiera e attivo logico riferisce all'elemento in un ambito fuoco che ha il focus.
FocusManager
ottiene l'elemento attivo logico nell'ambito dell'attivazione specificata, in questo caso la finestra (this
):
IInputElement focusedControl = FocusManager.GetFocusedElement(this);
Keyboard
tornerà l'elemento con la corrente di input focus tastiera:
IInputElement focusedControl = Keyboard.FocusedElement;
Grazie per il consiglio. Finisco per utilizzare la prima opzione con la combinazione di Application.Current.Windows [0] invece di 'this'. – Honzajscz
Vedere [System.Windows.Input.Keyboard.FocusedElement] (https://msdn.microsoft.com/en-us/library/system.windows.input.keyboard.focusedelement.aspx) e [System.Windows.Input. FocusManager.GetFocusedElement()] (https://msdn.microsoft.com/en-us/library/ms604088.aspx) – Lu55