【问题标题】:Wpf prevent Popup window from removing the focus of an TextboxWpf 阻止弹出窗口移除文本框的焦点
【发布时间】:2014-09-19 08:02:51
【问题描述】:

在我的 WPF 应用程序中,我使用一个小窗口来显示一些通知,但是当通知窗口出现时,主窗口中的焦点会丢失。 例如,当我在 TextBox 中书写并收到通知(显示通知窗口)时,文本框失去焦点,我必须再次单击文本框才能继续我的工作。

那么当通知窗口出现时,我怎样才能保持主窗口的焦点呢?我已经尝试在通知窗口中设置 Focusable="false"

【问题讨论】:

  • 你能给我们展示一个小例子来重现这个吗?为了帮助您,我们需要更多信息:什么是 notificationwindow ?你如何显示它?等等

标签: c# .net wpf vb.net


【解决方案1】:

这并不是真正的我怎样才能阻止某些控制变得专注?,而是 我怎样才能在失去焦点后集中我的控制? 现在,作为@AdrianFaciu 提到,当您从问题中省略所有相关信息时,很难详细说明。一种选择是在失去焦点时将焦点设置为您的控件:

private void OnControlLostFocus(object sender, RoutedEventArgs e)
{
    YourControlType control = sender as YourControlType;
    if (control != null) control.Focus();
}

【讨论】:

    【解决方案2】:

    Window 对象上有一个ShowActivated 属性,因此您可以在显示子窗口后保持主窗口处于激活状态。

    来自 MSDN:

    当打开一个 ShowActivated 属性设置为 false 的窗口时,该窗口不会被激活,并且不会引发其 Activated 事件,直到用户通过选择它来手动激活该窗口。

    【讨论】:

    • 谢谢,简单有效的解决方案