Я использую метод , описанный здесь , чтобы присоединить ICMmand ViewModel к событию LostFocus Combobox, установив CommandBehavior.RoutedEventName="LostFocus"
. Я ожидал, что событие сработает одновременно с привязкой для UpdateSourceTrigger=LostFocus
, но, похоже, это не так.
Связывание выбранного элемента UpdateSourceTrigger=LostFocus
срабатывает всякий раз, когда клавиатура уходит, или после того, как пользователь фактически выбирает элемент из выпадающего списка, щелкая (не уверен, почему это вызывает потерю фокуса, но, по крайней мере, он срабатывает ПОСЛЕ выбора).
Прикрепленное событие поведения срабатывает каждый раз, когда пользователь нажимает на поле со списком. Немедленно. При использовании клавиатуры она ведет себя нормально, стреляя, когда вы нажимаете на нее. Однако при использовании мыши событие срабатывает, когда элемент управления фокусируется, прежде чем пользователь даже сделает выбор. Есть ли способ заставить его вести себя так же, как lostfocus для выбранного элемента?
Редактировать : Мне любопытно, существует ли другой ответ, но я нашел способ обойти эту проблему, установив дополнительную привязку. SelectedItem обновляет по умолчанию, обрабатывая обычные уведомления об изменениях свойств и selectedvalue обновляет в lostfocus, обрабатывая только те команды, которые я пытался запустить. Обвязка выглядит так:
SelectedItem="{Binding Path=SelectedCustomer, Mode=TwoWay}"
SelectedValuePath="CM_CUSTOMER_ID"
SelectedValue="{Binding Path=CustomerLostFocus, UpdateSourceTrigger=LostFocus}"