На ум приходит только WinApi по след. рецепту: когда условия нарушены, то устанавливаем в стиле окна отсутствие кнопки закрытия. Когда не нарушены, то возвращаем.
Или убираем крестик вообще, а закрытие окна разрешаем только по кнопке "Закрыть".

Может, переиграть сценарий? Ну, закроет человек немодальный диалог, так интеракторы всё равно останутся в том же состоянии... Можно, наконец, через Anchor отловить закрытие и тут же переоткрыть диалог "ах ты так... А мы тебе опять тем же окном..."