2009-05-06 143 views
1

我有处理我的控件的LostFocus事件的代码。它验证该值,并在某些情况下将启用后续控制。例如,可能有一个ComboBox允许用户选择一个国家。随后的组合框允许用户选择一个状态。如果当前选择的国家不是美国,则状态组合框被禁用。如果用户选择“美国”,然后退出组合框,则LostFocus代码启用状态组合框。但是,状态组合框不会获得焦点,而是将焦点转移到状态组合框后面的控件。WPF焦点问题

我试过使用PreviewLostKeyboardFocus来处理事件,而没有运气。我有点不知所措,想要破解WPF来完成这项工作。有什么建议么?

回答

1

尝试验证数据何时更改,而不是UI。您可以添加验证规则,当从绑定更新属性时会触发验证规则。然后,您可以使用样式触发器来激活有问题的控件。 Check this article它应该有所帮助。

+0

你能编辑这个答案吗?链接已经死亡。 – 2017-02-01 21:25:33

1

我在猜测发生了什么,它决定了在LostFocus事件触发之前选项卡的控件,从而跳过状态组合框,因为它被禁用。以下是how focus works in WPF的信息。你想要做的是在你的处理程序中,确定它是否应该转到下一个状态组合框,并通过FocusManager类以编程方式聚焦该元素。