In my WPF application I have a lot of custom dialog boxes that pop open so the user can do various things with someDialogClass.ShowDialog()
. To make sure that the dialog stays on top of the window that called it, I add Topmost="True"
to the Window
tag of the dialog's XAML file. This works, but the dialog is shown over every window open—even other applications. This is really annoying. So is there a way to have the dialog forced to always be on top of its parent, but not necessarily on top of other applications?
Here is a simplified version of the Window
tag of the dialogs I have (omitting all the xmlns
stuff):
<Window
mc:Ignorable="d"
ShowInTaskbar="False"
Topmost="True"
WindowStartupLocation="CenterOwner"
ResizeMode="NoResize"
SizeToContent="WidthAndHeight"
WindowStyle="ToolWindow">
You need to set the Owner of the Dialog/Window and it will then be on top of only that window.
For example:
var loginForm = new LoginForm();
loginForm.Owner = Application.Current.MainWindow;
var success = loginForm.ShowDialog();
Do not set the TopMost property on the Window otherwise it will be on top of every window.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With