WPF popup is always TOP_MOST

来源:百度文库 编辑:神马文学网 时间:2024/04/30 04:39:16
Hmmm... WPF popup is always TOP_MOST

Recently I have this bug inherited from my good intern that WPF will always be TOP_MOST in terms of z-index. The bug scenario is thatwhen you have another application (eg. notepad.exe) going on top of myWPF application (with Popup launched), Popup will be top most eventhough notepad appears on top of my app. So to fix this, I'm using someold Win32 tricks :-)

[DllImport("user32", EntryPoint = "SetWindowPos")]
private static extern int SetWindowPos(IntPtr hwnd, int hwndInsertAfter, int x, int y, int cx, int cy, int wFlags); 

public class MyPopup : Popup
{
  ...
  protected override void OnOpened(EventArgs e)
  {
    IntPtr hwnd = ((HwndSource)PresentationSource.FromVisual(this.Child)).Handle;
    SetWindowPos(hwnd, -2, posX, posY, (int)this.Width, (int)this.Height, 0);
  }
}