2017-02-06 2 views
1

Ich habe einen WPF MainWindow, wo ich eine zweite wie folgt öffnen kann, als Beispiel this post:WPF Fenster eigentümer Problem

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

kommt selten vor, dass ich die folgende Laufzeitausnahme „cannot set owner property to a window that has not been shown previously“ haben.

Haben Sie Vorschläge? Danke im Voraus.

+0

, die wahrscheinlich darauf hinweisen, dass 'this' - Ihr Hauptfenster - hat wurde noch nicht gezeigt. –

+0

Nein, das Hauptfenster wird angezeigt, weil ich das zweite Fenster erst nach dem Drücken einer Taste öffne. –

Antwort

0

Behandeln Sie das Statechanged oder Activated-Ereignis des Fensters und stellen Sie die Owner-Eigenschaft in diesem Event-Handler wie hier vorgeschlagen:

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

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

Was passiert, wenn ich mehrere Windows öffnen kann? Wenn ich folgendes mache private void MainWindow_OnActivated (Objekt Absender, EventArgs e) { ((Fenster) Sender) .Owner = this; } Ich habe eine Ahnung, wenn ich das Fenster zum ersten Mal öffne. –

+0

Das übergeordnete Fenster * muss * geöffnet worden sein, bevor Sie es als Eigentümer des untergeordneten Fensters verwenden können. – mm8

+0

Sicher, das MainWindow wird sonst angezeigt. Ich kann die Taste nicht drücken, um das zweite Fenster anzuzeigen. –