2016-07-22 11 views
2

Ich verwende ModernUI für WPF (MUI) auf Codeplex verfügbar. Es ist ein nettes Framework und ich habe keine Probleme, es als Container für meine Seiten zu verwenden.Wie alle Dialogtasten im Dialogfenster zu verstecken/entfernen

Ich habe ein benutzerdefiniertes Dialogfeld hinzugefügt, aber ich möchte keine der Standardschaltflächen verwenden.

this.Buttons = new Button[] { this.OkButton, this.CancelButton }; 

Aber eine Schaltfläche Schließen erscheint statt:

In der init-Methode habe ich diese Zeile auf Kommentar?

Irgendwelche Ideen?

Dank

Antwort

0

WPF hat keine Eigenschaft in-built die Titelleiste des Schließen-Schaltfläche zu verbergen, aber man kann es mit ein paar Zeilen von P/Invoke tun.

Zuerst diese Erklärungen zu Ihrem Window-Klasse hinzufügen:

private const int GWL_STYLE = -16; 
private const int WS_SYSMENU = 0x80000; 
[DllImport("user32.dll", SetLastError = true)] 
private static extern int GetWindowLong(IntPtr hWnd, int nIndex); 
[DllImport("user32.dll")] 
private static extern int SetWindowLong(IntPtr hWnd, int nIndex, int dwNewLong); 

Dann diesen Code setzen in das Loaded-Ereignis des Fenster:

var hwnd = new WindowInteropHelper(this).Handle; 
SetWindowLong(hwnd, GWL_STYLE, GetWindowLong(hwnd, GWL_STYLE) & ~WS_SYSMENU); 

Und los geht: nicht mehr Schließen. Sie werden auch kein Fenstersymbol auf der linken Seite der Titelleiste haben, was bedeutet, dass kein Systemmenü angezeigt wird, selbst wenn Sie mit der rechten Maustaste auf die Titelleiste klicken - sie alle zusammen.

Beachten Sie, dass Alt + F4 weiterhin das Fenster schließt. Wenn Sie nicht zulassen möchten, dass das Fenster geschlossen wird, bevor der Hintergrund-Thread fertig ist, können Sie OnClosing auch überschreiben und Cancel auf True setzen, wie von Gabe vorgeschlagen.

+0

Danke, aber ich spreche nicht über die Titelleiste.Ich spreche über das Dialogfeld von der modernen UI-Framework zur Verfügung gestellt. –

+0

Kannst du bitte auch einen Schnappschuss teilen? – Lakhtey

Verwandte Themen