1

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

我尝试使用 PreviewLostKeyboardFocus 来处理事件,但没有成功。对于想办法破解 WPF 来完成这项工作,我有点不知所措。有什么建议么?

4

2 回答 2

1

我猜正在发生的事情是它确定了在 LostFocus 事件触发之前要切换到的控件,从而跳过了 State 组合框,因为它被禁用了。这是有关焦点如何在 WPF中工作的信息。您要做的是在您的处理程序中,确定它是否应该接下来进入状态组合框,并通过FocusManager类以编程方式聚焦该元素。

于 2009-05-06T16:39:44.253 回答
1

尝试验证数据何时更改,而不是 UI。您可以添加从绑定更新属性时将触发的验证规则。然后您可以使用样式触发器来激活相关控件。 检查这篇文章它应该有帮助。

于 2009-05-06T16:41:19.913 回答