Eu só queria apresentar um guia de início rápido para transformar um novo projeto em um que use MEF / MVVM Light.
- Instale o MVVM Light via NuGet.
- Adicione um
DataContext
a todas as suas visualizações noWindow
elemento XAML: (Path=Main
deve ser o nome da propriedade emViewModelLocator
):
<Window DataContext="{Binding Source={StaticResource Locator}, Path=Main}">
- Adicione as referências MEF ao seu projeto: clique com o botão direito em
References
sob seu projeto, cliqueAdd Reference...
e selecione tudo emSystem.ComponentModel
. - Adicione uma
[Export]
tag em todos os seus modelos de visualização:
[Export]
public class MainViewModel : ViewModelBase
{
// ...
}
- Em seu
ViewModelLocator
construtor, crie umCompositionContainer
e obtenha seus modelos de visualização exportando-os a partir de:
public class ViewModelLocator
{
private CompositionContainer container;
public ViewModelLocator()
{
var catalog = new AssemblyCatalog(System.Reflection.Assembly.GetExecutingAssembly());
this.container = new CompositionContainer(catalog);
}
public MainViewModel Main
{
get
{
return this.container.GetExportedValue<MainViewModel>();
}
}
}