WPF 实现弹出层
这是一个提示窗口,它是一个真正的窗口
现在,换一种方式
这是注入到窗口中的弹出层
操作思路
获取窗口的Content,在将内容套在一个新的Grid中,再在grid上层套上自定义的浮层控件
注意点
-
在浮层弹出后,应给原有的Content KeyboardNavigation.SetTabNavigation 设置为None,以便它无法接受来自键盘tab键的焦点导航
并在弹层关闭后恢复原有的设置 -
处理模态消息,浮层事实上没有办法阻断消息,要想实现窗口的ShowDialog机制,
要么使用while true,要么用回调,while true 看上去就不太明智 -
为浮层添加ESC取消等操作,这应该是符合windows的设计习惯的
-
浮层穿透,如果弹出层是一个不需要处理的消息提示,
在弹出后,它应该获得焦点,并在失去焦点后关闭
加了个背景看看
https://www.cnblogs.com/RedSky/p/9056648.html
补充
这操作不太秒,在断开内容链接时可能会引发其他事件
Adorner 可能更适合,但操作思路大同小异
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步