Центрирование модального окна WPF в полноэкранном приложении - PullRequest
2 голосов
/ 30 мая 2011

Я пытаюсь создать модальное диалоговое окно подтверждения, которое всегда появляется в центре экрана.

Я пытался использовать:

ConfirmCreate confirmCreate = new ConfirmCreate(); // ConfirmCreate extends Window.
bool? dialogResult = confirmCreate.ShowDialog();
confirmCreate.Owner = this;
confirmCreate.WindowStartupLocation = WindowStartupLocation.CenterOwner;

... и ...

ConfirmCreate confirmCreate = new ConfirmCreate();
bool? dialogResult = confirmCreate.ShowDialog();
confirmCreate.WindowStartupLocation = WindowStartupLocation.CenterScreen;

... и даже ...

ConfirmCreate confirmCreate = new ConfirmCreate(); // ConfirmCreate is a subclass of Window.
bool? dialogResult = confirmCreate.ShowDialog();
confirmCreate.WindowStartupLocation = WindowStartupLocation.Manual;
confirmCreate.Left = Width/2 - confirmCreate.Width/2;
confirmCreate.Top = Height/2 - confirmCreate.Height/2;

Безрезультатно, может кто-нибудь объяснить, почему это не работает?

Ответы [ 2 ]

3 голосов
/ 30 мая 2011

Попробуйте все свои варианты с confirmCreate.ShowDialog(); в конце.Другими словами, установите настройки для WindowStartupLocation и затем вызовите ShowDialog()

0 голосов
/ 30 мая 2011

Ну, посмотрев код, я понял, что был немного глупым.

Если я установлю свойства перед использованием метода ShowDialog(), свойства CentreScreen и CentreOwner будут работать правильно.

ConfirmCreate confirmCreate = new ConfirmCreate(); // ConfirmCreate extends Window.
confirmCreate.Owner = this;
confirmCreate.WindowStartupLocation = WindowStartupLocation.CenterOwner;
bool? dialogResult = confirmCreate.ShowDialog();

и ...

ConfirmCreate confirmCreate = new ConfirmCreate();
confirmCreate.WindowStartupLocation = WindowStartupLocation.CenterScreen;
bool? dialogResult = confirmCreate.ShowDialog();
...