Сохранение диалогов поверх окна, но не поверх всего
В моем приложении 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 в окне, иначе оно будет поверх каждого окна.