Интересно: я выкопал резервную копию и нашел причину:
Перед этим открывается еще одно диалоговое окно, окно которого отображается с помощью ShowDialog, диалог A, затем поверх него отображается это диалоговое окно, диалог B,Когда диалог B загружен, я теперь скрываю диалог A, Window.Hide (), а затем показываю его снова, когда диалог B закрывается. Это скрытие диалога A каким-то образом делает другие окна позади диалога B снова интерактивными для пользователя, в то время как диалог B открыт!
Я предполагаю, что причина в том, что одновременное отображение нескольких диалогов необычный, и когда я прячу один из них, WPF думает, что он может снова включить другую Windows. Но это только мое предположение!
Решение состоит в том, чтобы вместо того, чтобы скрывать, сделать очень маленький другой диалог (ПРИМЕЧАНИЕ: настройка Visibilityдля Hidden имеет тот же результат, что и вызов Hide ()):
public void HideDialog()
{
myDialogA.SizeToContent = SizeToContent.Manual;
myDialogA.Height = 0;
myDialogA.Width = 0;
}
public void UnHideDialog()
{
myDialogA.SizeToContent = SizeToContent.WidthAndHeight;
}
(Бизнес-требование для показа нескольких диалогов выходит за рамки этого вопроса, прежде чем меня вызовут злой каневил для использования модальных окон, ине имеет значения, если вам интересно, как можно отобразить несколько диалогов, см. здесь: Безопасно ли отображать несколько диалогов в WPF? )