我正在使用此处描述的方法将 ViewModel ICommand 附加到组合框的 LostFocus 事件,方法是设置CommandBehavior.RoutedEventName="LostFocus"
. 我预计事件会在触发绑定的同时UpdateSourceTrigger=LostFocus
触发,但事实并非如此。
每当键盘选项卡离开时,或者在用户通过单击从下拉列表中实际选择一个项目后, selecteditem BindingUpdateSourceTrigger=LostFocus
就会触发(不知道为什么这会导致失去焦点,但至少它会在做出选择后触发)。
只要用户单击组合框,附加的行为事件就会触发。立即地。如果使用键盘,它会正常运行,当您离开它时会触发。但是,当使用鼠标时,当控件获得焦点时触发事件,甚至在用户做出选择之前。有没有办法让这个行为像 lostfocus 对选定项目的行为一样?
编辑:我很好奇是否存在另一个答案,但我通过设置附加绑定找到了解决此问题的方法。SelectedItem 默认更新,处理正常的属性更改通知,并在 lostfocus 上更新 selectedvalue,仅处理我试图运行的命令。绑定看起来像这样:
SelectedItem="{Binding Path=SelectedCustomer, Mode=TwoWay}"
SelectedValuePath="CM_CUSTOMER_ID"
SelectedValue="{Binding Path=CustomerLostFocus, UpdateSourceTrigger=LostFocus}"