wpf view的viewmodel依赖注入
时间: 2023-07-03 19:12:16 浏览: 216
在 WPF 中,View 和 ViewModel 的依赖注入可以通过以下几种方式来实现:
1. 通过构造函数注入:
在 ViewModel 的构造函数中,注入 View 中所需要的服务或者依赖项,例如:
```
public class MainViewModel
{
private readonly IMyService _myService;
public MainViewModel(IMyService myService)
{
_myService = myService;
}
}
```
在 View 中,通过创建 ViewModel 的实例,同时传入所需要的服务:
```
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
DataContext = new MainViewModel(new MyService());
}
}
```
2. 通过属性注入:
在 ViewModel 中,通过属性注入需要的服务或者依赖项,例如:
```
public class MainViewModel
{
[Dependency]
public IMyService MyService { get; set; }
}
```
在 View 中,通过依赖注入容器来实现属性的注入:
```
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
var container = new UnityContainer();
container.RegisterType<IMyService, MyService>();
DataContext = container.Resolve<MainViewModel>();
}
}
```
3. 通过方法注入:
在 ViewModel 中,通过方法注入需要的服务或者依赖项,例如:
```
public class MainViewModel
{
private IMyService _myService;
[InjectionMethod]
public void Initialize(IMyService myService)
{
_myService = myService;
}
}
```
在 View 中,通过依赖注入容器来实现方法的注入:
```
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
var container = new UnityContainer();
container.RegisterType<IMyService, MyService>();
var mainViewModel = container.Resolve<MainViewModel>();
mainViewModel.Initialize(container.Resolve<IMyService>());
DataContext = mainViewModel;
}
}
```
需要注意的是,以上三种方式都需要使用依赖注入容器来实现。在 WPF 中,常用的依赖注入容器包括 Unity、Autofac、Prism 等。具体使用哪个容器,可以根据项目的需要和个人偏好来选择。
阅读全文