【问题标题】:WPF: Controlling focus in a custom controlWPF:控制自定义控件中的焦点
【发布时间】:2025-12-23 04:35:10
【问题描述】:

我正在开发一个自定义控件(比如 BoxControl),其中包含许多控件,如文本框、几个按钮等。

我将连续拥有许多 BoxControl,在通过选项卡导航时,我希望它的行为类似于当 BoxControl 获得焦点时,它总是将焦点传递给它的文本框,而当它的文本框失去焦点时,整个 BoxControl 就会失去焦点焦点并将焦点传递给下一个 BoxControl。

有什么想法可以做到吗?

【问题讨论】:

  • 只是分享以防其他人遇到与我类似的问题。我有一个自定义控件,我可以将焦点放在控件上,但不是控件中我真正希望焦点进入的文本框。上面的解决方案不适用于问题的这种变化。遇到解决问题的这个链接。 codeproject.com/tips/478376/…

标签: wpf focus controls


【解决方案1】:

您需要将事件处理程序添加到您的BoxControl 以处理 GotFocus 事件,然后将焦点放在其文本框上。

您还需要向文本框的 LostFocus 事件添加一个事件处理程序,然后您可以在 BoxControl 上引发一个自定义事件,以便它的控制器可以知道必须将焦点传递给下一个 BoxControl

希望对你有帮助。

【讨论】:

    【解决方案2】:

    您可以通过自定义控件模板中的 Setter 将 Focusable 属性设置为 false。无论是在控件上,还是在里面的各种元素上。

    【讨论】: