2009-05-26 12 views
1

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?

Antwort

1

Sie sind direkt in Ihrer Beschreibung dort, das Popup behält alle Aktion Fokus, bis es selbst den Fokus verliert. Wenn Sie versuchen, die Funktionalität der ComboBox zu ändern, können Sie sich creating your own ControlTemplate ansehen, die sich anders verhält und nicht die Standardaktion des Popup-Steuerelements beibehält.

Hoffe das hilft, nicht ganz sicher, was Sie versuchen zu tun.

+0

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

+0

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. –

Verwandte Themen