Вот стандартные шаблоны управления ComboBox: WPF и Silverlight .
В примере WPF Popup и ToggleButton (стрелка справа) связаны со свойством IsDropDownOpen:
<Popup IsOpen="{TemplateBinding IsDropDownOpen}" ...
<ToggleButton IsChecked="{Binding Path=IsDropDownOpen,Mode=TwoWay,RelativeSource={RelativeSource TemplatedParent}}" ...
Класс Popup
имеет свойство StaysOpen
, которое не указано в стандартном шаблоне ComboBox и имеет значение по умолчанию true
. Из этого следует, что во внутренней реализации ComboBox есть подписка на событие LostFocus
, которое устанавливает IsDropDownOpen=false
каждый раз, когда элемент управления теряет фокус.
Silverlight не имеет привязок в xaml, но вы найдете ту же последовательность, если откроете сборку в .Net Reflector.