我有代码处理我的控件的LostFocus事件。它验证了值,并且在某些情况下将启用后续控制。例如,可能存在允许用户选择国家的ComboBox。随后的ComboBox允许用户选择状态。如果当前所选国家/地区不是美国,则禁用状态ComboBox。如果用户选择“USA”然后从组合框中选项卡,LostFocus代码将启用状态ComboBox。但是,State ComboBox没有获得焦点,而是将焦点转移到State ComboBox之后的控件。
我尝试使用PreviewLostKeyboardFocus来处理事件而没有运气。我有点不知所措,想要破解WPF来完成这项工作。有什么建议吗?
答案 0 :(得分:1)
我猜测正在发生的事情是它确定了在LostFocus事件触发之前对tab的控制,从而跳过State组合框,因为它被禁用。这是how focus works in WPF的信息。你想要做的是在你的处理程序中,确定它是否应该转到下一个State组合框,并通过FocusManager类以编程方式关注该元素。
答案 1 :(得分:1)
尝试验证数据何时更改,而不是UI。您可以添加在从绑定更新属性时将触发的验证规则。然后,您可以使用样式触发器来激活相关控件。 Check this article它应该有所帮助。