Сообщение об ошибке в этом случае довольно точно: как только окно закрыто, оно закрывается навсегда. Поскольку ShowDialog()
всегда закрывает окно, вам нужно создавать новый экземпляр окна каждый раз, когда вы вызываете ShowDialog()
.
Один довольно простой способ сделать это в вашем примере - это получить для события Load
аргумент типа Func<Window>
:
В главном окне:
private Window MakeWindow()
{
return new MyWindow();
}
private void Example()
{
usercontrol.Load(MakeWindow);
}
В пользовательском управлении:
public void Load(Func<T> makeWindow)
{
_form = makeWindow();
...
}
Заметьте, кстати, что не должно быть никаких причин для вызова Activate
или установка ShowActivated
- ShowDialog
сделает все это. И я не знаю, почему бы тебе позвонить VerifyAccess
.