Wenn das WPF-Kombinationsfeld angeklickt und in Fokus ist, kann die einzige Interaktion, die danach auftritt, mit der ComboBox sein. Wenn noch etwas interagiert wird, einschließlich der Fensterfunktionen (minimize
, restore
, close
, resize
) und eines beliebigen Steuerelements im Fenster, wird die Aktion ignoriert und die ComboBox verliert den Fokus.WPF-Mausverhalten, wenn ComboBox fokussiert ist
Zusätzlich MouseEnter
und MouseLeave
auf die Fensterknöpfe sind noch aktiv, aber wenn MouseEnter
auf dem Fensterrand (?) Auftritt, wird der Mauszeiger nicht auf die Resize-Zeiger ändern. Dieses Verhalten ist aufgrund der Verwendung des Popup-Steuerelements ComboBox
sinnvoll. Das Popup-Steuerelement existiert unabhängig von dem visuellen Hauptbaum, und wenn das Fenster sich bewegt oder seine Größe ändert, bleibt das Popup über dem Hauptfenster schwebend fixiert.
Ich habe versucht mit Reflector, um zu sehen, was die ComboBox
tut, aber ich konnte nicht finden, was ich suche. Grundsätzlich weiß ich nicht, ob dieses Verhalten vom Fenster, der ComboBox kommt oder ob es etwas mit dem Popup zu tun hat. Wie kann ich dieses Problem lösen?
Ich versuche nicht, die Funktionalität des Kombinationsfelds zu ändern Ich versuche, ein völlig anderes Steuerelement zu erstellen, das wie die Combobox-Steuerelementvorlage nur ohne die Umschaltschaltfläche strukturiert wird. Wenn Sie sich die ComboBox anschauen, können Sie sehen, dass während das Popup geöffnet ist, jedes Mausereignis durchgeht. Es ignoriert sogar das Schweben der Fenstergrenze, wo der Größenänderungszeiger normalerweise angezeigt würde. Ich weiß, dass sie das tun, damit das Popup nicht offen bleiben kann, wenn sich das Fenster ändert. Ich versuche nur herauszufinden, wie man ein ähnliches Verhalten erreicht. – BrandonS
In diesem Fall würde ich wahrscheinlich die Drop-Down-Idee der ComboBox ablegen und einfach ein Steuerelement erstellen, das Inhalte anzeigt, wenn umgeschaltet wird. Dann können Sie festlegen, dass das Inhaltsfenster geschlossen wird, wenn der Mausfokus verloren geht. Sie müssten die Funktionalität der ComboBox selbst duplizieren, können aber wahrscheinlich nur das gewünschte Verhalten erreichen. –