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.