WPF mit Unity Container - Registrieren und Auflösen von ViewModels in Views

Hallo, ich versuche, Unity-Container in WPF MVVM-Anwendung zu verwenden. Ich habe kein Prisma verwendet, da es zu schwer zu sein scheint. Hier ist die Anwendungsstruktur. Ich versuche herauszufinden, wie Ansichten in ViewModels und Abhängigkeiten der Ansichtsmodelle (Dienste) aufgelöst werden.

Anwendung:

Ansichten

MainWindow.xaml
CustomerList.xaml
CustomerDetail.xaml
BookList.xaml
BookDetail.xaml

ViewModels

MainViewModel

CustomerListViewModel

BoolListViewModel

BookDetailViewModel

CustomerDetailViewModel

Bibliothek

ICustomerService (AddCustomer, SaveCustomer, GetCustomers, GetCustomer)

CustomerService:ICustomerService

IBookService (GetBooks, GetBook)

BookService:IBookService

IBookReserveService(Reserve, Return)

BookReserveService:IBookReserveService

MainViewModel benötigt Verweise auf ICustomerService und IBookService

CustomerListViewModel benötigt einen Verweis auf ICustomerService

BoolListViewModel benötigt einen Verweis auf IBookService

BookDetailViewModel benötigt Verweise auf ICustomerService und IBookReserveService

CustomerDetailViewModel benötigt Verweise auf ICustomerService und IBookReserveService

Ich habe Getter Setter-Eigenschaft für Dienste in jedem Ansichtsmodell.

Ich habe Probleme mit der Verwendung von Dependency Injection mit WPF, insbesondere für Views und ViewModel. Ich habe mit Unity versucht, mich in einer Konsolenanwendung zu registrieren und zu beheben, die einwandfrei funktioniert. Ich hätte aber gerne einige Ideen, wie dies für die WPF-App gemacht werden könnte. Ich habe versucht mich anzumelden

 container.RegisterType<ICustomerService, CustomerService>()
 container.RegisterType<IBookReserveService, BookReserveService>()
 container.RegisterType<IBookService, BookService>()

und lösen Sie es mit container.Resolve ();

Ich war mir jedoch nicht sicher, wie ich feststellen konnte, welche Ansicht welches Ansichtsmodell verwenden und bei Bedarf auflösen muss und nicht, wann die App gestartet wird. Außerdem löse ich nicht alle Mappings im App-Start auf. Dies sollte erfolgen, wenn das Menü (Auswählen eines Kunden zum Anzeigen von Details, Auswählen eines Buches zum Anzeigen von Details, Speichern eines Kunden, Reservieren eines Buches usw.) ausgewählt ist.

Das meiste, was ich gelesen habe, wollte IView und IViewModel verwenden. Aber nicht sicher, ob ich den Vorteil verstanden habe.

Jede Hilfe wird sehr geschätzt.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage