您好,我正在尝试在 WPF MVVM 应用程序中使用 Unity 容器。我没有使用过 Prism,因为它看起来很重。这是应用程序结构。我试图弄清楚如何将视图解析为视图模型以及视图模型(服务)的依赖关系。
应用:
Views
MainWindow.xaml
CustomerList.xaml
CustomerDetail.xaml
BookList.xaml
BookDetail.xaml
视图模型
MainViewModel
CustomerListViewModel
BoolListViewModel
BookDetailViewModel
CustomerDetailViewModel
Library
ICustomerService (AddCustomer, SaveCustomer, GetCustomers, GetCustomer)
CustomerService:ICustomerService
IBookService (GetBooks, GetBook)
BookService:IBookService
IBookReserveService(Reserve, Return)
BookReserveService:IBookReserveService
MainViewModel需要引用ICustomerService和IBookService
CustomerListViewModel 需要引用 ICustomerService
BoolListViewModel 需要引用 IBookService
BookDetailViewModel 需要引用 ICustomerService 和 IBookReserveService
CustomerDetailViewModel 需要引用 ICustomerService 和 IBookReserveService
我在每个视图模型中都有服务的 getter setter 属性。
我遇到了如何在 WPF 中使用依赖注入的问题,特别是对于视图和 ViewModel。我尝试使用 Unity 在控制台应用程序中注册和解析,该应用程序工作正常。但我想要一些关于如何为 WPF 应用程序完成此操作的想法。我尝试注册
container.RegisterType<ICustomerService, CustomerService>()
container.RegisterType<IBookReserveService, BookReserveService>()
container.RegisterType<IBookService, BookService>()
并使用解决它
容器.Resolve();
但我不确定如何判断哪个视图必须使用哪个视图模型,并在需要时而不是在应用程序启动时解析它们。另外,我不解析应用程序启动中的所有映射。应该在选择菜单(选择客户查看详细信息、选择书籍查看详细信息、保存客户、预订书籍等)时完成。
我读到的大部分内容都想使用 IView 和 IViewModel。但不确定我是否理解其中的优势。
任何帮助是极大的赞赏。