如何使用 mvvmlight 处理依赖注入
How to handle dependency injection with mvvmlight
我不知道如何在 MainWindowViewModel 的构造函数调用中注入参数。我想要的是在 viewmodellocator 中注册当前主窗口 (this) 的一个实例。我怎样才能做到这一点?
这是我在viewmodellocator中的情况class:
public ViewModelLocator()
{
ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default);
//SimpleIoc.Default.Register<Window>(); //THIS IS NOT WORKING BECOUSE ITS A NEW INSTANCE, I NEED THE INSTANCE OF THE CURRENT MAINWINDOW HERE.
SimpleIoc.Default.Register<MainWindowViewModel>();
}
主视图模型:
public MainWindowViewModel(Window window)
{
this.Window = window;
//Listen out for the window resizing
this.Window.StateChanged += StateChanged;
}
MainWindow.xaml
DataContext="{Binding MainWindow, Source={StaticResource Locator}}"
如果您希望 Window
解析为您的 MainWindow
:
public ViewModelLocator()
{
ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default);
SimpleIoc.Default.Register<System.Windows.Window>(() => System.Windows.Application.Current.MainWindow as MainWindow);
SimpleIoc.Default.Register<MainViewModel>();
}
另请注意,您应该在 XAML:
中仅绑定到 "Main"
DataContext="{Binding Main, Source={StaticResource Locator}}"
我不知道如何在 MainWindowViewModel 的构造函数调用中注入参数。我想要的是在 viewmodellocator 中注册当前主窗口 (this) 的一个实例。我怎样才能做到这一点?
这是我在viewmodellocator中的情况class:
public ViewModelLocator()
{
ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default);
//SimpleIoc.Default.Register<Window>(); //THIS IS NOT WORKING BECOUSE ITS A NEW INSTANCE, I NEED THE INSTANCE OF THE CURRENT MAINWINDOW HERE.
SimpleIoc.Default.Register<MainWindowViewModel>();
}
主视图模型:
public MainWindowViewModel(Window window)
{
this.Window = window;
//Listen out for the window resizing
this.Window.StateChanged += StateChanged;
}
MainWindow.xaml
DataContext="{Binding MainWindow, Source={StaticResource Locator}}"
如果您希望 Window
解析为您的 MainWindow
:
public ViewModelLocator()
{
ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default);
SimpleIoc.Default.Register<System.Windows.Window>(() => System.Windows.Application.Current.MainWindow as MainWindow);
SimpleIoc.Default.Register<MainViewModel>();
}
另请注意,您应该在 XAML:
中仅绑定到 "Main"DataContext="{Binding Main, Source={StaticResource Locator}}"