2009-07-25 13 views
9

Nella mia applicazione ho una finestra che uso per tracciare i dati di debug. Quando si carica, vorrei aprirlo "in background", dietro tutte le altre finestre.Come inviare una finestra WPF sul retro?

Qual è il modo migliore per raggiungere questo obiettivo?

risposta

1

C'è qualche ragione particolare per cui non si desidera mostrare la finestra in uno stato ridotto al minimo e consentire all'utente di mostrarlo? Se si desidera mostrare la finestra in stato minimizzato risolve il problema, utilizzare

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

voglio la finestra per essere aperta fin dall'inizio della sfondo. Grazie per il tuo suggerimento ma non mi aiuta. –

17

È possibile utilizzare il seguente codice:

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

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

+0

Wow ... ero sicuro che ci sarebbe un one-liner per prendersi cura di questo ... –

+0

Quindi, la mia risposta ha funzionato per te? Quindi contrassegnarlo come accettato. – huseyint

+0

Non accetterà "DllImport", cosa dovrei fare? –

Problemi correlati