How to send a WPF window to the back?
In my application I have a window I use for plotting debug data. When it loads, I would like to open it "in the background", behind all other windows.
What's the best way to achieve this?
Solution 1:
You can use the following code:
[DllImport("user32.dll")]
static extern bool SetWindowPos(
IntPtr hWnd,
IntPtr hWndInsertAfter,
int X,
int Y,
int cx,
int cy,
uint uFlags);
const UInt32 SWP_NOSIZE = 0x0001;
const UInt32 SWP_NOMOVE = 0x0002;
static readonly IntPtr HWND_BOTTOM = new IntPtr(1);
static void SendWpfWindowBack(Window window)
{
var hWnd = new WindowInteropHelper(window).Handle;
SetWindowPos(hWnd, HWND_BOTTOM, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE);
}
Source: http://www.aeroxp.org/board/lofiversion/index.php?t4983.html
Solution 2:
Is there any particular reason you don't want to show the window in minimized state and allow user to show it? If showing window in minimized state solves your problem, use
<Window WindowState="Minimized" (...)>