2009-07-25 5 views
9

Dans mon application, j'ai une fenêtre que j'utilise pour tracer des données de débogage. Quand il se charge, je voudrais l'ouvrir "en arrière-plan", derrière toutes les autres fenêtres.Comment envoyer une fenêtre WPF à l'arrière?

Quelle est la meilleure façon d'y parvenir?

Répondre

1

Y a-t-il une raison particulière pour laquelle vous ne voulez pas montrer la fenêtre dans un état minimisé et permettre à l'utilisateur de l'afficher? Si montrant fenêtre état réduit résout votre problème, utilisez

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

Je veux que la fenêtre soit ouverte dès le début de la Contexte. Merci pour votre suggestion, mais cela ne m'aide pas. –

17

Vous pouvez utiliser le code suivant:

[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

+0

Wow ... J'étais sûr qu'il y aura un one-liner pour prendre soin de ça ... –

+0

Alors, est-ce que ma réponse a fonctionné pour vous? Alors s'il vous plaît marquer comme accepté. – huseyint

+0

Il n'acceptera pas le "DllImport", que dois-je faire? –

Questions connexes