2017-03-14 9 views
1

Es sieht aus wie Caliburn.Micros WindowManager haben Problem mit WPF Windows, die Konstruktor Parameter haben, obwohl der Typ dieses Parameters in Caliburn.Micro IoC registriert ist. Gibt es eine bessere Möglichkeit, den benötigten Parameter in Window zu setzen, als den stinkenden Service Locator IoC.Get(Of T) im Konstruktor zu verwenden?Caliburn.Micro WindowManager und Window Konstruktor Parameter

Namespace Views 
    Class MainWindowView 
    Private _eventAggregator As IEventAggregator 
    Public Sub New(eventAggregator As IEventAggregator) 
     _eventAggregator = eventAggregator 
    End Sub 
    End Class 
End Namespace 

Sub ShowMainWindowView() 
    'Everything is correctly registered in Ioc... 
    Dim windowManager As New WindowManager 
    Dim viewModel As New MainWindowViewModel 
    windowManager.ShowDialog(viewModel) 
    'Exception is thrown about absence of parameterless constructor of MainWindowView 
End Sub 
+0

Welches Problem? Erhalten Sie einen Fehler? Wie sieht dein Code aus? Bitte posten Sie ein [minimales, vollständiges, überprüfbares Beispiel] (https://stackoverflow.com/help/mcve) –

+0

Blick in die falsche Richtung. Ihr Ansichtsmodell sollte mit dem Fenstermanager und nicht mit der Ansicht interagieren. –

+0

Sicher ist, dass ShowMainWindowView-Methode überall sein kann. In meinem Fall ist es in der Befehlsmethode des Ansichtsmodells. –

Antwort

0

ich versuchte, dieses Problem wieder in neuem, klaren Projekt zu reproduzieren und es funktioniert - es ist nur in IoC-Container Typen der Ansicht (Fenster) registriert hat, benötigt wird, und Window spritzt automatisch erforderliche Abhängigkeiten in Konstruktor Sicht.

Verwandte Themen