Сохранение диалогов поверх окна, но не поверх всего

В моем приложении WPF у меня есть множество настраиваемых диалоговых окон, которые открываются, чтобы пользователь мог делать различные вещи с помощью someDialogClass.ShowDialog(). Чтобы убедиться, что диалог находится над окном, вызывающим его, я добавляю Topmost="True" в тег Window диалогового файла XAML. Это работает, но диалог отображается в каждом окне open-even других приложений. Это действительно раздражает. Итак, есть ли способ заставить диалог всегда быть на вершине своего родителя, но не обязательно поверх других приложений?

Вот упрощенная версия тега Window в диалогах, которые у меня есть (опуская все вещи xmlns):

<Window
mc:Ignorable="d"
ShowInTaskbar="False"
Topmost="True"
WindowStartupLocation="CenterOwner"
ResizeMode="NoResize"
SizeToContent="WidthAndHeight"
WindowStyle="ToolWindow">

Ответ 1

Вам нужно установить Owner диалогового окна /Window, и он будет поверх этого окна.

Например:

var loginForm = new LoginForm();
loginForm.Owner = Application.Current.MainWindow;
var success = loginForm.ShowDialog();

Не устанавливайте свойство TopMost в окне, иначе оно будет поверх каждого окна.