2012-04-23 2 views
0

Итак, у меня есть пользовательский элемент управления в окне, которое создает новое диалоговое окно при нажатии кнопки. Я хотел бы, чтобы окно появилось поверх окна, вызывающего его. Я пытался это сделать ...Центрирование нового диалогового окна в WPF

 NewDialog dlg = new NewDialog(); 
     dlg.WindowStartupLocation = WindowStartupLocation.CenterOwner; 
     dlg.ShowDialog(); 

Проблемы является владелец не кажется, вызывающее окно (возможно, потому, что пользовательский элемент управление делает вызов, а не фактическое окно?). Так что я попытался добавить это ...

 dlg.Owner = Application.Current.Windows[0]; 

которая в основном работает, но это не является универсальным решением, как иногда мои новые окна должны вызвать новое окно, и я хочу, чтобы они сосредоточены на вызывающей окно, а не основное окно. Есть ли лучший способ правильно установить владельца в окно, в котором пользовательский элемент управления является частью? Я пробовал много вариантов, которые кажутся немного причудливыми, когда окно появляется в совершенно другом месте, или что-то не оценивает правильно и выдает ошибку.

Любые предложения?

+0

Try 'dlg.Owner = это,' – LPL

+0

^- вызывает ошибку компилятора, не может преобразовать тип управления пользователя в «окне» –

ответ

4

Если this не относится к типу Window, используйте статический Window.GetWindow Method, чтобы получить окно хоста.

dlg.Owner = Window.GetWindow(this); 
+0

достаточно легко, спасибо, сэр! –

Смежные вопросы