Silverlight Integration Guide¶
Configuring Simple Injector to build up Page classes with their dependencies is simply a matter of adding a Bootstrap() method to the App class and resolving the MainPage during Application_Startup:
using System;
using System.Windows;
using SimpleInjector;
public partial class App : Application
{
public App()
{
this.Startup += this.Application_Startup;
this.Exit += this.Application_Exit;
this.UnhandledException += this.Application_UnhandledException;
InitializeComponent();
}
private void Application_Startup(object sender, StartupEventArgs e)
{
var container = Bootstrap();
this.RootVisual = container.GetInstance<MainPage>();
}
public static Container Bootstrap()
{
// Create the container as usual.
var container = new Container();
// Register your pages and view models:
container.Register<MainPage>();
container.Register<MainPageViewModel>();
container.Verify();
return container;
}
// Rest of the code
}
Usage¶
Constructor injection can now be used in any pages (e.g. MainPage) and view models:
using System.Windows;
public partial class MainPage : Page
{
public MainPage(MainPageViewModel viewModel)
{
InitializeComponent();
// Assign to the data context so binding can be used.
base.DataContext = viewModel;
}
}
public class MainPageViewModel
{
private readonly IQueryProcessor queryProcessor;
private readonly IUserContext userContext;
public MainPageViewModel(IQueryProcessor queryProcessor,
IUserContext userContext) {
this.queryProcessor = queryProcessor;
this.userContext = userContext;
}
public IEnumerable<IUser> Users => this.queryProcessor.Execute(new GetAllUsers());
}