2016-07-11 7 views
3

Ich bin dabei, eine IDialogService zu implementieren. Dies wird von meinem ViewModel aufgerufen, das die View nicht kennt.Suchen Sie den Besitzer der mit meinem ViewModel verknüpften Ansicht

Was wäre der beste Ansatz, um die Besitzer zu der ShowDialog abzuleiten?

Es wäre toll, wenn ich vermeiden könnte, zu registrieren, welche View an welches ViewModel gebunden ist.

Wenn es helfen könnte, verwende ich Prism (v6).

+0

Wie wäre es 'window.Owner = Application.Current.MainWindow;'? – Jose

+0

@Kirenenko Ich habe darüber gelernt, aber wenn (nicht ideal, aber wenn) das MainWindow öffnet ein neues Fenster, und dieses Fenster öffnet einen Dialog, wäre es nicht modal für das neue Fenster? – J4N

+1

Ja, ich denke, es wird modal zum 'MainWindow' sein, unabhängig vom aufrufenden Fenster. Dann können Sie vielleicht 'Application.Current.Windows.OfType () .SingleOrDefault (x => x.IsActive);' – Jose

Antwort

5

Sie können dies versuchen:

window.Owner = Application.Current.Windows.OfType<Window>().SingleOrDefault(x => x.IsActive); 
+1

Vielen Dank. Ich habe gerade einen anderen Fall hinzugefügt (wie wenn kein Fenster aktiv ist, um das "erste" nicht aktiv zu machen) oder wenn überhaupt kein Fenster zurückgegeben wird – J4N

+0

Seien Sie vorsichtig beim Debuggen. Ich erinnere mich an einige Fehler, weil das aktive Hauptfenster der Debugger war. – Jose

Verwandte Themen