【发布时间】:2011-09-22 00:38:27
【问题描述】:
我的 XBAP 中有一个Popup 控件,每当弹出控件打开并且它失去焦点时(例如警报框、断点、切换到 Windows 中的另一个应用程序、切换到我的 Web 浏览器中的另一个选项卡)等),弹出窗口不再响应鼠标事件之外的任何内容。
我不能:
- 用鼠标选择一个文本框
- 使用鼠标突出显示文本框中的文本
- 使用 Tab 键更改控件
- 当我用鼠标打开组合框时,使用键盘选择它
我可以:
- 使用鼠标更改组合框值
- 用鼠标点击按钮
【问题讨论】:
我的 XBAP 中有一个Popup 控件,每当弹出控件打开并且它失去焦点时(例如警报框、断点、切换到 Windows 中的另一个应用程序、切换到我的 Web 浏览器中的另一个选项卡)等),弹出窗口不再响应鼠标事件之外的任何内容。
我不能:
我可以:
【问题讨论】:
我能找到的最接近这个问题的是http://social.msdn.microsoft.com/Forums/en/wpf/thread/cd723315-187f-4d8b-a97d-6aac38a2ed1f
程序员失去了对弹出窗口的关注,并且再也无法将其恢复。根据微软支持者的说法。 “看起来您遇到了与 XBAP 中的 Popup 相关的已知错误。”
您可以查看它是否与您的问题相似,但问题从未解决。 OP 最终在主页上添加了一个画布和一个用户控件来替换弹出窗口。
如果这实际上不是某种不可避免的行为,并且我正在从头开始解决这个问题,我会检查您的应用程序何时重新获得焦点,并查看您的应用程序是否同时获得 keyboard and logical focus 和焦点范围一直到弹出窗口上的控件都是正确的。
在逻辑焦点中,有一个“焦点范围”的概念,它是围绕一组 UIElement 的应用程序定义的边界。每个 Focus Scope 都维护自己的“Focused Element”,它可以不同于具有键盘焦点的元素。
【讨论】: