2017-02-06 12 views
1

У меня есть WPF MainWindow, где я могу открыть вторую в последующем, взяв в качестве примера this post:WPF владелец окна вопрос о собственности

var win = new CalibrationWindow(){Owner = this}; 
win.ShowDialog(); 

Редко бывает, что у меня есть следующее исключение во время выполнения «cannot set owner property to a window that has not been shown previously».

Есть ли у вас какие-либо предложения? Заранее спасибо.

+0

Это, вероятно, указывает, что 'this' - главное окно - есть пока не показано. –

+0

Нет, главное окно показано, потому что я открываю второе окно только после нажатия кнопки. –

ответ

0

Ручка StateChanged или Активированный событие окна и установить свойство Owner в этот обработчик событий, как предложено здесь:

Having Trouble Setting Window's Owner in Parent's Constructor

var win = CalibrationWindow(); 
this.Activated += (s, e) => { win.Owner = this; }; 
win.ShowDialog(); 
+0

Что делать, если я могу открыть несколько Windows? Если я сделаю следующее: private void MainWindow_OnActivated (отправитель объекта, EventArgs e) { ((Window) отправитель) .Owner = this; } У меня возникает ошибка, когда я открываю окно в первый раз. –

+0

Родительское окно * must * было открыто, прежде чем вы сможете использовать его как владельца дочернего окна. – mm8

+0

Несомненно, MainWindow отображается иначе, я не могу нажать кнопку, чтобы показать второе окно. –

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

  • Нет связанных вопросов^_^