2009-07-25 78 views
9

在我的應用程序中,我有一個窗口用於繪製調試數據。當它加載時,我想打開它「在後臺」,在所有其他窗口後面。如何發送WPF窗口到後面?

達到此目的的最佳方法是什麼?

回答

1

是否有任何特殊的原因,您不希望以最小化狀態顯示窗口並允許用戶顯示它?如果顯示在最小化狀態的窗口解決您的問題,使用

<Window WindowState="Minimized" (...)> 
+0

我希望窗口是從一開始開放背景。感謝您的建議,但它不能幫助我。 – 2009-07-25 06:47:23

17

您可以使用下面的代碼:

[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); 
} 

來源:http://www.aeroxp.org/board/lofiversion/index.php?t4983.html

+0

哇......我確定會有一班人來照顧那個...... – 2009-07-27 05:57:27