Это плохая работа для конструктора. Если вам не нужно создавать окно, не создавайте его. Создание и последующее закрытие нецелесообразно. И это вызывает вашу проблему, так как ваше недавно созданное частично окно уже находится в списке Application.Current.Windows
!
Вместо использования такого рода логики c в конструкторе, используйте stati c метод (или фабрика):
public static MyPopup OpenPopup(Guid guid) =>
Application.Current.Windows
.OfType<Forms.MyPopup>()
.FirstOrDefault(w => w.GetGuid() == guid)
?? new MyPopup(guid);
(не стесняйтесь возвращать null
, если вы не хотите возвращать ссылку на существующее всплывающее окно).