请问您能否举例说明如何使用(您最喜欢的)DI框架来连接WPF应用程序的MVVM视图模型?
您会创建一个强连接的视图模型层次结构(例如,每个嵌套控件的视图模型都是父级视图模型的属性,并将其绑定到嵌套控件的XAML数据上下文中),还是会使用某种更抽象的“视图模型”管理器,该管理器维护一些弱连接的层次结构... 例如CAB?
请问您能否举例说明如何使用(您最喜欢的)DI框架来连接WPF应用程序的MVVM视图模型?
您会创建一个强连接的视图模型层次结构(例如,每个嵌套控件的视图模型都是父级视图模型的属性,并将其绑定到嵌套控件的XAML数据上下文中),还是会使用某种更抽象的“视图模型”管理器,该管理器维护一些弱连接的层次结构... 例如CAB?
public class MyViewModel
{
private readonly IMyDependency _myDependency;
public MyViewModel(IMyDependency myDependency)
{
_myDependency = myDependency;
}
}
我在Code Project上发布了关于如何使用MVVM和MEF实现可扩展WPF应用程序的文章。然而,如果你仔细看,我也使用MEF进行DI。
该应用程序完全采用MVVM模式,并且只使用DataTemplates(以及偶尔的Window)作为视图,就像Josh Smith的文章中一样。WPF会自动将正确的View应用于相应的ViewModel,非常方便。
它使用MEF使各个部分可以“找到”彼此。因此,“View”菜单项的ViewModel使用扩展点查找所有应该在子菜单中的菜单项,每个菜单项的ViewModel使用组合点查找它们应该交给布局管理器的ViewModel。它们还使用基本的服务定位器(MEF)“查找”布局管理器服务。View菜单示例几乎与您谈论的嵌套ViewModel完全相同。酷的是,直到运行时它们甚至不知道彼此的存在。