AutofacをIoCコンテナーとして使用して、WindowsPhone8アプリケーションのビューにViewModelを挿入できるようにしたい。どうすればこれを行うことができますか?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
。DataContext
DataContext="{Binding Path=MainViewModel, Source={StaticResource ViewModelLocator}}"
Autofacを使用して依存性注入を使用してインスタンスを作成するクラスDataContext
のMainViewModel
プロパティにを設定していることがわかります。ViewModelLocator
MainViewModel
ソースはここにあります:https ://github.com/ErikSchierboom/autofacwp8dependencyinjectiondemo.git
于 2012-12-12T12:55:17.177 に答える