我使用统一的WPF(MVVM光)的方法是这样的:
我的应用程序根目录创建一个引导程序类,是这样的:
public class Bootstrapper
{
public IUnityContainer Container { get; set; }
public Bootstrapper()
{
Container = new UnityContainer();
ConfigureContainer();
}
private void ConfigureContainer()
{
Container.RegisterType<IMyRepo, MyRepo>();
Container.RegisterType<MainViewModel>();
}
}
这是我的引导程序。我也注册了ViewModels,因为在Locator中很容易创建它们。
接下来,我创建了ViewModelLocator的构造函数中boostrapper,我在这里解决每一个视图模型,如:
public class ViewModelLocator
{
private static Bootstrapper _bootStrapper;
static ViewModelLocator()
{
if (_bootStrapper == null)
_bootStrapper = new Bootstrapper();
}
public MainViewModel Main
{
get { return _bootStrapper.Container.Resolve<MainViewModel>(); }
}
}
正如你看到的,我ViewModelLocator很简单,它只是创造引导程序和解决视图模型,并这些虚拟机将通过容器解决他们的依赖关系:)
也许有一个最佳的方式来实现这一点,但这确实是一个好的开始。
但我正在使用.NET 3.5 :( – xaria 2011-02-17 03:32:13