2011-01-01 6 views
1

Ich bin jetzt an einem benutzerdefinierten Steuerelement in WPF arbeiten. Ich habe Combobox als Eltern benutzt. Ich frage mich, wie funktioniert meine benutzerdefinierte Combobox wie ihre Eltern. Wie kann ich auf einen Teil meines Bildschirms klicken und der Dropdown-Bereich meiner Combobox kann geschlossen werden ... Ich habe viele Möglichkeiten ausprobiert, aber beide funktionieren nicht richtig.Ich möchte über eine Implementierung Detail über Combobox in WPF (oder silverlight)

Kann jemand einige Artikel oder etwas anderes geben?

+0

Fügen Sie Ihren XAML und Code hinzu. –

+1

Es gibt einen Teil einer ComboBox, die "Popup" genannt wird. Es verfügt über eine Eigenschaft "StaysOpen", die angibt, ob ComboBox geschlossen werden soll, wenn der Benutzer irgendwo außerhalb klickt. – vorrtex

+0

Vielen Dank! Ich werde es versuchen. Aber ich möchte die internen Implementierungen kennen – jiluo

Antwort

1

Hier sind die Standardsteuervorlagen einer ComboBox: WPF und Silverlight.

Im WPF Beispiel das Popup und die ToggleButton (der Pfeil auf der rechten Seite) mit der Eigenschaft gebunden sind IsDropDownOpen:

<Popup IsOpen="{TemplateBinding IsDropDownOpen}" ... 

<ToggleButton IsChecked="{Binding Path=IsDropDownOpen,Mode=TwoWay,RelativeSource={RelativeSource TemplatedParent}}" ... 

Eine Klasse Popup hat die Eigenschaft StaysOpen, die in der Standardvorlage nicht angegeben einer ComboBox und hat einen Standardwert true. Daraus folgt, dass es in der internen Implementierung einer ComboBox eine Subskription für das Ereignis LostFocus gibt, das jedes Mal, wenn die Steuerung einen Fokus verliert, IsDropDownOpen=false setzt.

Silverlight hat keine Bindungen in XAML, aber Sie finden die gleiche Sequenz, wenn Sie die Baugruppe in .NET Reflektor öffnen.

+0

Ich habe die Implementierung von Combobox in WPF gelesen, meine eigene Implementierung benötigt das togglebutton nicht, also werde ich das IsDropDownOpen nicht verwenden, ich werde das dropdownopen selbst behandeln. Danke für deine Antwort! – jiluo

Verwandte Themen