Keeping dialogs on top of window, but not on top of everything
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.
Andrew
Updated on June 17, 2022Comments
-
Andrew almost 2 years
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 addTopmost="True"
to theWindow
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 thexmlns
stuff):<Window mc:Ignorable="d" ShowInTaskbar="False" Topmost="True" WindowStartupLocation="CenterOwner" ResizeMode="NoResize" SizeToContent="WidthAndHeight" WindowStyle="ToolWindow">