I'm writing a modal dialog in WPF. How do I set a WPF window to not have a close button? I'd still like for its WindowState
to have a normal title bar.
I found ResizeMode
, WindowState
, and WindowStyle
, but none of those properties allow me to hide the close button but show the title bar, as in modal dialogs.
Best Answer
WPF doesn't have a built-in property to hide the title bar's Close button, but you can do it with a few lines of P/Invoke.
First, add these declarations to your Window class:
Then put this code in the Window's
Loaded
event:And there you go: no more Close button. You also won't have a window icon on the left side of the title bar, which means no system menu, even when you right-click the title bar - they all go together.
Important note: all this does is hide the button. The user can still close the window! If the user presses Alt+F4, or closes the app via the taskbar, the window will still close.
If you don't want to allow the window to close before the background thread is done, then you could also override
OnClosing
and setCancel
to true, as Gabe suggested.