2017-02-06 2 views
1

私は例this postとして取って、私は従うように、第2の1を開くことができWPF MainWindowを持っている: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

いいえ、メインウィンドウが表示されます。これは、ボタンを押した後にのみ第2のウィンドウを開くためです。 –

答えて

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を開くことができますか?私が次のことを行う場合 プライベートvoid MainWindow_OnActivated(オブジェクト送信者、EventArgs e) { ((ウィンドウ)送信者).Owner = this; }初めて窓を開けると、私は迎えがあります。 –

+0

親ウィンドウ*は、子ウィンドウの所有者として使用する前に開かれていなければなりません。 – mm8

+0

もちろん、MainWindowが表示されます。それ以外の場合は、2番目のウィンドウを表示するためにボタンを押すことができません。 –

関連する問題