3

AutofacをIoCコンテナーとして使用して、WindowsPhone8アプリケーションのビューにViewModelを挿入できるようにしたい。どうすればこれを行うことができますか?Caliburn.Microフレームワークを見てきましたが、もっと簡単なものを使用したいと思います。

4

1 に答える 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です。を参照するには、ビューに以下を追加するだけですMainViewModelDataContext

DataContext="{Binding Path=MainViewModel, Source={StaticResource ViewModelLocator}}"

Autofacを使用して依存性注入を使用してインスタンスを作成するクラスDataContextMainViewModelプロパティにを設定していることがわかります。ViewModelLocatorMainViewModel

ソースはここにあります:https ://github.com/ErikSchierboom/autofacwp8dependencyinjectiondemo.git

于 2012-12-12T12:55:17.177 に答える