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 可能更适合,但操作思路大同小异

posted @   trykle  阅读(569)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示