Я хочу создать поведение, при котором падение вниз закрывается при утрате фокуса. Моя первая попытка была:WPF ComboBox: как узнать, когда контейнер предметов (когда был открыт) потерял фокус
public class ComboBoxLostFocusBehavior : Behavior<ComboBox> {
protected override void OnAttached() {
base.OnAttached();
AssociatedObject.LostFocus += (object sender, RoutedEventArgs e) => AssociatedObject.IsDropDownOpen = false;
}
}
но LostFocus событие имеет в виду только тумблер части, а не контейнера элементов.
Как я могу обратиться к выпадающему списку?
Я хочу: , когда выпадающий список потерял фокус -> выпадающий закрывает
EDIT:
Я думаю, что вопрос неправильно. ComboBox имеет 2 основные части, часть, которую вы видите, когда она закрыта (позволяет называть ее A), и выпадающий список (позволяет называть его B). LostFocus ссылается только на часть A. Таким образом, в рассматриваемом мной сценарии, который является неправильным, вы открываете раскрывающийся список, перемещаете мышь от A до B, а когда просто оставляете A и прибываете B, B закрывается (по поведение). Таким образом, LostFocus - это неправильный способ пойти, и я ищу что-то еще, чтобы предположить, что падение (B) потеряло фокус.
Вы имеете в виду, когда выпадающее меню закрыто? или когда выпадающее меню закрывается? или когда раскрывающийся список открыт и теряет фокус, который закрывает его? – pushpraj
, когда выпадающее меню закрыто, я думаю, он не может быть в фокусе. Поэтому, когда раскрывающийся список открывается и чем теряется фокус. Как это сделать? – Keren
вы должны выбрать SelectionChanged. Что вам нужно делать на LostFocus? –