C# WPF: Разворачивание диалоговых окон поверх главного при открытии
У меня в программе имеется доп. окно. Его я открываю как диалоговое:
DialogWindow dialog = new DialogWindow();
dialog.ShowDialog();
Все отлично, как и задумано - пользователь не может взаимодействовать с главным окном пока открыто диалоговое, но есть одно НО:
Если свернуть оба окна, то при необходимости развернуть их обратно, при наведении на иконку программы на панели задач пользователь увидит 2 окна на выбор - главное и диалоговое.
Он может по каким-то причинам нажать на главное и оно откроется, но он не сможет с ним взаимодействовать. Придется снова наводиться на иконку приложения на панели задач и выбирать диалоговое, чтобы оно развернулось.
Здесь у меня 2 решения в голове:
- Скрывать главное окно с панели задач, вызывая у него свойство
ShowInTaskbar = false;. Это по сути то, что мне нужно, но в этом случаеокно исчезает на пару миллисекунд, что выглядит не очень красиво при открытии диалога. - Как-то заставить диалоговое окно автоматически разворачиваться при открытии главного. Но можно ли это сделать - я не знаю.
Подскажите, есть ли еще какие-то способы?
Ответы (1 шт):
Ответ написан на основе совета Blackmeser, спасибо.
В классе главного окна добавил объект диалогового:
private Window currentDialog = null;
При открытии диалогового окна, currentDialog принимает значение открытого окна:
DialogWindow dialog = new DialogWindow();
currentDialog = dialog;
dialog.ShowDialog();
currentDialog = null;
При закрытии - снова null.
Добавил триггер, срабатывающий при получении фокуса главным окном:
Activated += OnFocus;
И сам метод OnFocus:
private void OnFocus(object sender, EventArgs e)
{
if (currentDialog != null)
{
try
{
currentDialog.Activate();
}
catch { }
}
}
Готово! Теперь при разворачивании главного окна, если есть диалоговое, то оно открывается поверх главного