1. public class PopupNonTopmost : Popup
  2. {
  3. public static DependencyProperty TopmostProperty = Window.TopmostProperty.AddOwner(
  4. typeof( PopupNonTopmost ),
  5. new FrameworkPropertyMetadata( false, OnTopmostChanged ) );
  6.  
  7. public bool Topmost
  8. {
  9. get { return (bool)GetValue( TopmostProperty ); }
  10. set { SetValue( TopmostProperty, value ); }
  11. }
  12.  
  13. private static void OnTopmostChanged( DependencyObject obj, DependencyPropertyChangedEventArgs e )
  14. {
  15. ( obj as PopupNonTopmost ).UpdateWindow();
  16. }
  17.  
  18. protected override void OnOpened( EventArgs e )
  19. {
  20. UpdateWindow();
  21. }
  22.  
  23. private void UpdateWindow()
  24. {
  25. var hwnd = ( (HwndSource)PresentationSource.FromVisual( this.Child ) ).Handle;
  26. RECT rect;
  27.  
  28. if ( GetWindowRect( hwnd, out rect ) )
  29. {
  30. SetWindowPos( hwnd, Topmost ? - : -, rect.Left, rect.Top, (int)this.Width, (int)this.Height, );
  31. }
  32. }
  33.  
  34. #region P/Invoke imports & definitions
  35.  
  36. [StructLayout( LayoutKind.Sequential )]
  37. public struct RECT
  38. {
  39. public int Left;
  40. public int Top;
  41. public int Right;
  42. public int Bottom;
  43. }
  44.  
  45. [DllImport( "user32.dll" )]
  46. [return: MarshalAs( UnmanagedType.Bool )]
  47. private static extern bool GetWindowRect( IntPtr hWnd, out RECT lpRect );
  48.  
  49. [DllImport( "user32", EntryPoint = "SetWindowPos" )]
  50. private static extern int SetWindowPos( IntPtr hWnd, int hwndInsertAfter, int x, int y, int cx, int cy, int wFlags );
  51.  
  52. #endregion
  53. }

解决wpf popup控件遮挡其他程序的问题的更多相关文章

  1. WPF Popup 控件导致被遮挡内容不刷新的原因

    WPF Popup 控件导致被遮挡内容不刷新的原因 周银辉 今天在写一个WPF控件时用到了Popup控件,很郁闷的情况是:当popup关闭时,原来被popup挡住的界面部分不刷新,非要手动刷新一下(比 ...

  2. 自定义WPF Popup控件

    解决问题 1.WPF Popup 不随着 Window 一起移动的问题 2.WPF Popup 总是显示在最前面 引用命名空间 xmlns:ctrl="clr-namespace:Micro ...

  3. WPF popup控件的使用

    <Window x:Class="WPFPopup.RuntimePopup"     xmlns="http://schemas.microsoft.com/wi ...

  4. WPF标准控件模板查看程序(文件里面)

    xaml <Window x:Class="ControlTemplateBrowser.MainWindow" xmlns="http://schemas.mic ...

  5. wpf 客户端【JDAgent桌面助手】开发详解(四) popup控件的win8.0的bug

    目录区域: 业余开发的wpf 客户端终于完工了..晒晒截图 wpf 客户端[JDAgent桌面助手]开发详解-开篇 wpf 客户端[JDAgent桌面助手]详解(一)主窗口 圆形菜单... wpf 客 ...

  6. WPF中Popup控件在Win7以及Win10等中的对齐点方式不一样的解决方案 - 简书

    原文:WPF中Popup控件在Win7以及Win10等中的对齐点方式不一样的解决方案 - 简书 最近项目中使用弹出控件Popup,发现弹出框的对齐方式在不同的系统中存在不同(Popup在win10上是 ...

  7. 关于WPF中Popup控件的小记

    在wpf开发中,常需要在鼠标位置处弹出一个“提示框”(在此就以“提示框”代替吧),通过“提示框”进行信息提示或者数据操作,如果仅仅是提示作用,使用ToolTip控件已经足够,但是有些是需要在弹出的框中 ...

  8. Halcon的HWindowControl控件在WinForm程序中的使用介绍(重点解决图片缩放的问题)

     Halcon的HWindowControl控件在WinForm程序中的使用介绍(重点解决图片缩放的问题) 2016-12-04 20:11 362人阅读 评论(4) 收藏 举报  分类: Halco ...

  9. 【WPF】使用Popup控件做浮窗/提示框

    需求:当鼠标移入某个区域时,弹出一个浮窗,以便用户进行下一步操作. 效果如下图: 当鼠标移入左上角的[多选显示]框内,出现下面的浮窗(悬浮在原UI之上).当在浮窗外点击鼠标左键时,隐藏该浮窗. 由于该 ...

随机推荐

  1. apache2.4.35 403 forbidden 解决办法

  2. 51nod 1031+斐波那契和杨辉三角的一些基础知识

    直接斐波那契... #include<stdio.h> #include<queue> #include<string.h> #include<iostrea ...

  3. KM算法萌新讲解篇

    KM算法   首先了解问题:也就是最大权值匹配: 二分图里,边带了权值,求整幅图里匹配最大/最小的权值 因为接触匈牙利算法的时候看的是找对象系列的博文,所以也自己写一发找对象的博文吧: 算法背景: 信 ...

  4. MySQL存储引擎的区别

    一.mysql中myisam,innodb和memory三个存储引擎的区别 1.区别:1) MyISAM管理非事务表.提供高速存储和检索,以及全文搜索能力.MyISAM在所有MySQL配置里被支持,是 ...

  5. Android DPAD not enabled in AVD

    问题描述:打开Android的仿真器,右侧的按键部分对于上下左右键出现以下现象后果是,这些按键都没法使用,由于我是测试一个小游戏,俄罗斯方块,朋友,要是少了上下左右键,让我情何以堪,而且我试过使用键盘 ...

  6. IT兄弟连 JavaWeb教程 JSP访问JavaBean

    在JSP网页中,既可以通过程序代码来访问JavaBean,也可以通过特定的JSP标签来访问JavaBean.采用后一种方法,可以减少JSP网页中的程序代码,使他更接近与HTML页面.下面介绍访问Jav ...

  7. MyBatist庖丁解牛(五)

    很多时候我们在自己的每个service中没有中注入SqlSessionTemplate; 但是我们直接调用mapper接口方法就直接能够操作数据库 这个是为什么??下面开始解惑: Mybatis Sq ...

  8. shell 截取字符串(转)

    linux中对字符串的处理: 1.字符串分割例如  AAAAA-BBBBBB  按-分割去前后两部分 cut : [rich@localhost ~]$ str=AAAAA-BBBBBB[rich@l ...

  9. UWP 播放媒体控件

    最近我的uwp需要有一个有声朗读的功能,like this 点击声音按钮就可以有声朗读了.这里主要是用了媒体播放的控件. 一般我们把需求分为两种: 一种是不需要呈现播放器的样子,只需要用户点击一下别的 ...

  10. 2-1~3 MVC

    2-1~3 MVC 内容简介 为什么需要mvc? 前端mvc的困难在哪里? AngularJS语境下的mvc是如何实现的? 1. 为什么需要mvc 代码规模越来越大,切分职责是大势所趋. 为了复用:很 ...