Ausblenden der Schaltfläche „Schließen“ in WPF-Fenstern
In WPF erfordert die Erstellung modaler Dialoge ein Fenster ohne Schaltfläche „Schließen“ und gleichzeitig eine sichtbare Titelleiste . Trotz der Untersuchung von Eigenschaften wie ResizeMode, WindowState und WindowStyle erfüllt keine von ihnen diesen spezifischen Bedarf.
Um dieses Problem zu beheben, können Sie P/Invoke verwenden, um den Stil des Fensters zu manipulieren und das gewünschte Verhalten zu erreichen. So geht's:
Fügen Sie die folgenden Deklarationen zu Ihrer Window-Klasse hinzu:
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);
Fügen Sie dies in das Loaded-Ereignis des Fensters ein Code:
var hwnd = new WindowInteropHelper(this).Handle; SetWindowLong(hwnd, GWL_STYLE, GetWindowLong(hwnd, GWL_STYLE) & ~WS_SYSMENU);
Durch die Ausführung dieses Codes wird das erfolgreich ausgeblendet Schließen-Schaltfläche aus der Titelleiste, um ein intuitiveres modales Dialogerlebnis zu gewährleisten.
Wichtige Überlegungen:
Während diese Lösung die Schließen-Schaltfläche optisch verbirgt, verhindert sie dies nicht Benutzer daran hindern, das Fenster über Tastaturkürzel (z. B. Alt F4) oder über die Taskleiste zu schließen. Um ein vorzeitiges Schließen des Fensters zu verhindern, sollten Sie das OnClosing-Ereignis überschreiben und „Cancel“ auf „true“ setzen.
Das obige ist der detaillierte Inhalt vonSo blenden Sie die Schaltfläche „Schließen' in einem WPF-Fenster aus und behalten dabei die. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!