您好我正在尝试在 WPF MVVM 应用程序中使用 Unity 容器。我没有使用棱镜,因为它似乎很重。这是应用程序结构。我试图弄清楚如何将视图解析为 ViewModels 和视图模型(服务)的依赖关系。
应用:
意见
MainWindow.xaml
CustomerList.xaml
CustomerDetail.xaml
BookList.xaml
BookDetail.xaml
视图模型
MainViewModel
CustomerListViewModel
BoolListViewModel
BookDetailViewModel
CustomerDetailViewModel
图书馆
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 一起使用的问题,尤其是对于 Views 和 ViewModel。我尝试使用 Unity 在运行正常的控制台应用程序中注册和解析。但我想要一些关于如何为 WPF 应用程序完成此操作的想法。我试过注册
container.RegisterType<ICustomerService, CustomerService>()
container.RegisterType<IBookReserveService, BookReserveService>()
container.RegisterType<IBookService, BookService>()
并使用 container.Resolve(); 解决它
但我不确定如何判断哪个视图必须使用哪个视图模型并在需要时解决它们,而不是在应用程序启动时解决它们。另外,我不解决应用程序启动中的所有映射。应在选择菜单(选择客户查看详细信息、选择图书查看详细信息、保存客户、预订图书等)时完成。
我读到的大部分内容都想使用 IView 和 IViewModel。但不确定我是否理解它的优势。
任何帮助是极大的赞赏。