在 WPF 中,使用 Popup 也许会看到 PreviewMouseDown 事件被吃掉
因为 PreviewMouseDown 是 RoutingStrategy.Direct 路由事件,不能在多个视觉树使用,在设置 Popup 点击界面 StaysOpen=“False” 的逻辑就在下面代码
如果写一个 CheckBox 放在界面上,运行代码可以看到可以被打勾但是没有事件
在 UIElement_OnPreviewMouseDown
添加输出内容,代码如下,可以看到,没有符合预期输出
本文代码放在 github 欢迎访问
此问题已报告 WPF 官方,请看 Known issus: Popup with “StaysOpen=false” steals PreviewMouseDown event · Issue #2166 · dotnet/wpf
更多请看 dotnet 读 WPF 源代码 Popup 的 StaysOpen 为 false 将会吃掉其他窗口的首次激活
原文链接: http://blog.lindexi.com/post/WPF-%E5%B7%B2%E7%9F%A5%E9%97%AE%E9%A2%98-Popup-%E5%90%83%E6%8E%89-PreviewMouseDown-%E4%BA%8B%E4%BB%B6
本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。
欢迎转载、使用、重新发布,但务必保留文章署名 林德熙 (包含链接: https://blog.lindexi.com ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请与我 联系。