单击外部组件以取消聚焦

时间:2017-12-29 16:33:30

标签: wpf xaml

默认情况下,我需要关注另一个组件(按钮或文本框)以从当前组件中取消聚焦。 我想点击外面。 因此,例如,如果我单击一个textBox并写一些东西,而不是在TextBox外部单击,我就无法键入,因为该组件没有聚焦。

(我希望我的解释很清楚,如果没有,请在评论中说明)

1 个答案:

答案 0 :(得分:0)

您可以通过附加PreviewMouseDown Window事件来实现此功能。另外,为了丢失焦点,您需要另一个可聚焦控件(例如名为_dummyControl的文本框)来将焦点移动到。

public MainWindow()
{
    this.PreviewMouseDown += PreviewMouseDownEventHandler;
}
private void PreviewMouseDownEventHandler(object sender, MouseButtonEventArgs e)
{
    //check conditions here...
    _dummyControl.Focus();
}

更多信息:

PreviewMouseDown事件发生在MouseDown或点击事件发生之前。通过附加到此事件,您的代码可以告诉用户何时单击窗口,此时您应该将焦点移动到隐藏控件以模拟非聚焦功能。