具有多个窗口的WPF应用程序,包括非活动:焦点问题

时间:2012-11-05 22:28:13

标签: c# .net wpf input focus

我有一个.Net 4应用程序,在WPF 4中有两个窗口:

  • One使用WS_EX_NOACTIVATE样式来防止获得焦点。
  • 另一个是基本窗口。

" no-activate"一旦我没有选择基本窗口(它没有获得焦点),窗口行为是合适的。但是当选择基本窗口时," no-activate"窗口可以聚焦...并在用户点击它时获得它。

就好像WPF认为同一应用程序的两个窗口有权提供焦点,即使它们不应该。 如果两个窗口都是WS_EX_NOACTIVATE,则不会发生此行为。

你曾经遇到过这个问题吗? 我读过这个:WPF in Visual Studio 2010 – Part 3 : Focus and Activation,但没有解决它。

编辑:我已经能够通过使用Popup作为我的非活动窗口的基类来解决。但是,我不想要一个Popup。为什么!弹出窗口从未得到关注:有人知道为什么/如何?如何将此行为重现到Window? 我尝试进入Popup / Window代码,但不是很清楚!

谢谢!

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

行。我部分解决了这个问题。

如果直接选择窗口,窗口已经获得焦点,但是当选择窗口的某个组件时,窗口不会聚焦。

只需添加:

Focusable = false; 

到窗口中包含的任何WPF控件,即使前一个焦点是同一个应用程序的窗口,它们也永远不会被聚焦。