WPF popup置顶

来源:互联网 发布:为什么ps软件打不开 编辑:程序博客网 时间:2024/04/29 04:15

在程序写一个popup发现他会在置顶,在网上找了两大神代码http://www.cnblogs.com/Leaco/p/3164394.html

http://blog.csdn.net/baijinwen/article/details/6159043

继承 Popup

public class CCPopup : Popup    {        public static DependencyProperty TopmostProperty = Window.TopmostProperty.AddOwner(typeof(CCPopup), 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 CCPopup).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    }
3 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 驾照a2扣6分了怎么办 a2本扣9分怎么办 驾驶证分扣3分怎么办? 异地换驾驶证没有居住证怎么办 b2开c1车扣分怎么办 驾照五次没考过怎么办 大车行驶证丢了怎么办 车的产权证丢了怎么办 车子行驶证掉了怎么办 定期的存折丢了怎么办 存折密码输错6次怎么办 营业执照原件丢失怎么办怎么注销 违章扣了14分怎么办 c1驾驶本过期了怎么办 考驾照没带身份证怎么办 上海扣满12分怎么办 美宝旅行证丢失怎么办 汽车证件全丢了怎么办 车的行驶本丢了怎么办 车和行驶证丢了怎么办 考驾照人在外地怎么办 外地考驾照没有居住证怎么办 考驾驶证预约密码忘了怎么办 考驾照密码忘了怎么办 考驾照的密码忘了怎么办 手机银行登录密码忘了怎么办 宽带账号或密码错误怎么办 车险过户联系不上原车主怎么办 换车了etc忘拆了怎么办 c1d驾驶证d证到期了怎么办 摩托车驾驶证过五年怎么办 没居住证想上东莞牌怎么办 外地考驾照需要暂住证怎么办 考驾照期间暂住证过期怎么办 b2驾照扣了6分怎么办 c1驾照扣了11分怎么办 c1驾驶证分扣9分怎么办 驾驶证c照扣6分怎么办 驾照过期1个月怎么办 上海驾驶证b证扣分怎么办 临时牌驾照丢了怎么办