我有一个包含三个按钮(ButtonA,ButtonB和ButtonC)的UserControl。这三个按钮更改了UserControl的Value依赖项属性。
当我尝试将此控件与UpdateSourceTrigger = LostFocus绑定一起使用时,它的行为不正确:
<custom:MyUserControl Value="{Binding SomeProp, Mode=TwoWay, UpdateSourceTrigger=LostFocus}" />
使用LostFocus作为UpdateSourceTrigger时,其想法是仅在控件失去焦点时才更新SomeProp的值。问题是,当用户单击ButtonA,然后在触发UserControl.GotFocus事件后立即单击ButtonB,UserControl.LostFocus和紧接着。依次更新SomeProp值。
那么,如何防止这种情况发生?当与MyUserControl的子级ButtonA,ButtonB和ButtonC进行交互时,每次从一个按钮切换到另一个按钮时,都会触发UserControl.LostFocus,而这不是我想要的。我需要仅在控件真正失去焦点时才触发UserControl.LostFocus,而不是在其子控件改变焦点时才触发。
有什么想法吗?