2011-05-29 4 views
4

Я хочу создать модальное всплывающее окно. До сих пор я создал окно, которое создаю, когда мне это нужно. Но я не думаю, что это правильный способ сделать это. Проблема в том, что каждый раз, когда я его называю, она открывается примерно на 20 пикселей справа и на 20 пикселей ниже предыдущей. Это раздражает. Является ли это поведение по умолчанию или я делаю что-то неправильно здесь?Создание WPF popup

Success win1 = new Success(); 
win1.ShowDialog(); 

Кроме того, я хочу, чтобы это было по центру, если это возможно?

+4

Это на самом деле по дизайну, и я не вижу, как это будет раздражать. Это описано в Руководстве UX для Windows: http://msdn.microsoft.com/en-us/library/aa511262.aspx – BoltClock

ответ

9

Ниже будет ваше диалоговое окно в форме владельца/родителя.

Success win1 = new Success(); 
win1.Owner = this; // For example , see the parent window here 
win1.WindowStartupLocation = WindowStartupLocation.CenterOwner; 
win1.ShowDialog(); 

Ниже приведены альтернативы, если вы хотите попробовать. Если вы хотите Центрировать его на экране, используйте «CenterScreen»

Руководство - Начальное расположение окна задается с кодом или отходит до местоположения Windows по умолчанию.

CenterScreen - Начальное расположение окна - это центр экрана, который содержит курсор мыши.

CenterOwner - Начальное местоположение окна - это центр окна, которому это принадлежит, как определено свойством Window.Owner.

+0

Хм, на самом деле, это сработало отлично! Спасибо! –

3

Вы хотите установить член окна «Успех» WindowStartupLocation. Похоже, что CenterOwner - это значение, которое вы хотите.

+1

Я хотел бы отметить, что вам также необходимо установить свойство Owner, чтобы это работало. –

+0

Хорошо поймать Эд - спасибо. CenterScreen может быть другой опцией. – cristobalito

+0

Я думаю, что я должен делать что-то неправильно, поскольку это просто сосредоточено на всем экране, а не на моем приложении. Спасибо в любом случае! –