我有一个WPF Popup
控件,其中包含一些编辑控件(列表框,文本框,复选框),其中包含相当多的空格.
Popup.StaysOpen
设置为False
,这是必需的.如果用户单击应用程序中的其他位置,则应视为编辑操作已中止,并且应关闭弹出窗口.
不幸的是,只要用户在弹出窗口的背景区域(编辑控件之间的空间)中单击,弹出窗口也会关闭.
我试过设置弹出窗口Focusable
.我也试过设置弹出窗口的孩子(a Border
)是可聚焦的.两个方面都没有运气.
此外,鼠标事件似乎通过弹出窗口.当我点击它时,弹出窗口下面的任何元素变得集中.尽管我Popup
和Border
(我正在点击)这两个IsHitTestVisible
并Focusable
设置为true
.
最后,我发现以下工作.鉴于...
...我在调用后在构造函数中使用了这段代码InitializeComponent
...
// Ensure that any mouse event that gets through to the // popup is considered handled, otherwise the popup would close _popup.MouseDown += (s, e) => e.Handled = true;
在Popup和Border上忽略Focusable似乎很奇怪.当鼠标悬停在边框上时,我可以通过在触发器中更改StaysOpen来解决您的问题: