Der Unterschied zwischen GotFocus und GotKeyboardFocus
Was ist der Unterschied(E) zwischen GotFocus
und GotKeyboardFocus
-und ähnlich LostFocus
und LostKeyboardFocus
?
Sorry für die simple Frage, aber ich habe es gegoogelt und gelesen eine Menge von blog-posts, aber ich bin immer noch verwirrt. Es scheint, niemand weiß genau, was ist der Unterschied ):
UPDATE:
Meine Verwendung:
Ich bin ein benutzerdefiniertes Steuerelement erstellen, indem Sie die Erweiterung Control
Klasse. So etwas wie ComboBox
aber mit einigen anderen Effekten. Ich versuche zum öffnen und schließen eines Popup
durch das festlegen einer Eigenschaft: IsDropDownOpen
wie ein ComboBox
durch die GotFocus
und LostFocus
Veranstaltungen. Ich will nicht Popup
geschlossen lassen, wenn ich Alt+Tab
ed das Fenster aber geschlossen, wenn ich auf eine Button
zum Beispiel, oder ich gehe zu einem TextBox
. Ich habe:
private static void OnGotFocusHandler(object sender, RoutedEventArgs e) {
if (e.Handled)
return;
((SearchBox)sender).IsDropDownOpen = true;
e.Handled = true;
}
private static void OnLostFocusHandler(object sender, RoutedEventArgs e) {
if (e.Handled)
return;
((SearchBox)sender).IsDropDownOpen = false;
e.Handled = true;
}
Den GotFocus
funktioniert. Aber die Lost
man nicht. Wenn ich die Lost
Zeug in LostKeyboardFocus
dann, wenn ich Alt+Tab
windows, oder Window
geht auf inaktiv, dann wird die Methode aufgerufen wird, während ich nicht wollen. Wie kann ich es lösen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
MSDN hat eine übersicht zu konzentrieren, aber ich werde versuchen es zu erklären hier.
WPF hat 2 Konzepte bezüglich Fokus. Es ist die physische Tastatur-Fokus, und es ist logisch, zu konzentrieren. Nur ein element kann Tastatur-Fokus ist (und wenn die Anwendung nicht die aktive Anwendung, kein element haben den Tastatur-Fokus).
Mehrere Einträge können mit logischen Fokus. In der Tat, können Sie neue "Fokus-Bereichen". Als pro MSDN:
Definieren Sie Ihre eigenen Fokus-Bereich auf ein element (in der Regel ein
Panel
) durch die EinstellungFocusManager.IsFocusScope="True"
. Die Steuerelemente in WPF-focus Bereiche standardmäßig sindWindow
,MenuItem
,ToolBar
, undContextMenu
.Dies macht Sinn, wenn Sie denken, über mehrere
Window
s in Ihrer Anwendung. Wenn SieAlt-Tab
zwischen Ihnen, Sie erwarten, dass Ihre Tastatur-Fokus zurück zu der gleichen Stelle, es war das Letzte mal, dasWindow
Fokus hatte. Durch halten der Tastatur konzentrieren und logische konzentrieren sich trennen, können Sie dies erreichen.Popup
(in einem custom control geerbt vonControl
Klasse) durch einstellen einesIsDropDownOpen
Eigenschaft. Ich habe es zutrue
imGotFocus
es funktioniert. Ich möchte, um es zufalse
imLostFocus
Veranstaltung. Aber es funktioniert nicht. Ich will nicht zu tun es inLostKeyboardFocus
, aber inLostFocus
. Jede Idee bitte?