自定义注册
约 195 字小于 1 分钟
PrismC#MVVMWPF
2025-06-10
Bootstrapper.cs:
protected override void ConfigureViewModelLocator()
{
base.ConfigureViewModelLocator();
// type / type
ViewModelLocationProvider.Register(typeof(MainWindow).ToString(), typeof(CustomViewModel));
// type / factory
ViewModelLocationProvider.Register(typeof(MainWindow).ToString(), () => Container.Resolve<CustomViewModel>());
// generic factory
ViewModelLocationProvider.Register<MainWindow>(() => Container.Resolve<CustomViewModel>());
// generic type
ViewModelLocationProvider.Register<MainWindow, CustomViewModel>();
}在 Bootstrapper 类中重写 ConfigureViewModelLocator 方法,配置 View 和 ViewModel 的绑定关系。这里提供了四种方式:
- 通过类型注册,直接指定 View 和 ViewModel 的类型。
- 通过工厂注册,指定 View 和 ViewModel 的类型,通过工厂方法创建 ViewModel,这里使用了 IoC 容器,来保证使用的 ViewModel 是同一个实例。
- 通过泛型工厂注册,直接指定 View 的类型,通过工厂方法创建 ViewModel。
- 通过泛型类型注册,直接指定 View 和 ViewModel 的类型。