public class PopupNonTopmost : Popup
{
public static DependencyProperty TopmostProperty = Window.TopmostProperty.AddOwner(
typeof(PopupNonTopmost),
new FrameworkPropertyMetadata(false, OnTopmostChanged)); public bool Topmost
{
get { return (bool)GetValue(TopmostProperty); }
set { SetValue(TopmostProperty, value); }
} private static void OnTopmostChanged(DependencyObject obj, DependencyPropertyChangedEventArgs e)
{
(obj as PopupNonTopmost).UpdateWindow();
} protected override void OnOpened(EventArgs e)
{
UpdateWindow();
} private void UpdateWindow()
{
var hwnd = ((HwndSource)PresentationSource.FromVisual(this.Child)).Handle;
RECT rect; if (GetWindowRect(hwnd, out rect))
{
SetWindowPos(hwnd, Topmost ? -1 : -2, rect.Left, rect.Top, (int)this.Width, (int)this.Height, 0);
}
} #region P/Invoke imports & definitions [StructLayout(LayoutKind.Sequential)]
public struct RECT
{
public int Left;
public int Top;
public int Right;
public int Bottom;
} [DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
private static extern bool GetWindowRect(IntPtr hWnd, out RECT lpRect); [DllImport("user32", EntryPoint = "SetWindowPos")]
private static extern int SetWindowPos(IntPtr hWnd, int hwndInsertAfter, int x, int y, int cx, int cy, int wFlags); #endregion
}

  

最新文章

  1. js入门学习~ 运动应用小例
  2. 从问题看本质:socket到底是什么?
  3. 30分钟全面解析-SQL事务+隔离级别+阻塞+死锁
  4. python的正则表达式
  5. Hibernate的ORM原理和实现
  6. 【JAVA 文件概述】
  7. Window对象简介
  8. sql 批量更新
  9. 洛谷P1467 循环数 Runaround Numbers
  10. Android Studio @Bind的用法,自动生成findViewById无需再实例化控件
  11. 第二篇:python基础之文件读写
  12. bzoj2124 等差子序列(hash+线段树)
  13. JS原型、原型链深入理解
  14. [bzoj3953] [WF2013]Self-Assembly
  15. IntelliJ IDEA启动Tomcat后,却无法访问Tomcat主页 等一系列问题
  16. noi.ac 第五场第六场
  17. Java微信二次开发(九)
  18. Unity Standard Assets Example Project
  19. numpy.random.randn()与numpy.random.rand()的区别(转)
  20. 整理OpenResty+Mysql+Tomcat+JFinal+Cannal+HUI

热门文章

  1. Flask第六篇——项目配置文件
  2. [LOJ6261]一个人的高三楼
  3. SEO SEM
  4. php基础语法(变量)
  5. CAS原理分析
  6. 学习笔记:AJAX 跨域问题
  7. oracle之 RAC Interconnect之HAIP
  8. error: device not found
  9. ASP.NET Ajax 客户端框架未能加载、"Sys"未定义
  10. linux安装oracle12c