我希望能够使用 Autofac 作为我的 IoC 容器将 ViewModels 注入到我的 Windows Phone 8 应用程序的视图中。我该怎么做呢?我看过 Caliburn.Micro 框架,但我想使用更简单的东西。
问问题
3297 次
1 回答
4
正是为了这个目的,我创建了一个小型演示应用程序。它定义了一个ViewModelLocator
类:
public class ViewModelLocator
{
private readonly IContainer container;
public ViewModelLocator()
{
var containerBuilder = new ContainerBuilder();
containerBuilder.RegisterType<MainViewModel>();
containerBuilder.RegisterType<ItemViewModel>();
this.container = containerBuilder.Build();
}
public MainViewModel MainViewModel
{
get
{
return this.container.Resolve<MainViewModel>();
}
}
public ItemViewModel ItemViewModel
{
get
{
return this.container.Resolve<ItemViewModel>();
}
}
}
要从您的视图中使用此类,您必须将其添加到应用程序的资源中。您可以通过修改App.xaml中的Application.Resources部分来执行此操作:
<Application.Resources>
<local:ViewModelLocator xmlns:local="clr-namespace:AutofacWP8DependencyInjectionDemo" x:Key="ViewModelLocator"/>
</Application.Resources>
现在您将能够在视图中注入视图模型。只是有观点的DataContext
。要引用MainViewModel
as,DataContext
只需将以下内容添加到您的视图中:
DataContext="{Binding Path=MainViewModel, Source={StaticResource ViewModelLocator}}"
您可以看到它将 设置DataContext
为类的MainViewModel
属性,该属性ViewModelLocator
使用AutofacMainViewModel
使用依赖注入创建实例。
你可以在这里找到源代码:https ://github.com/ErikSchierboom/autofacwp8dependencyinjectiondemo.git
于 2012-12-12T12:55:17.177 回答