我使用統一的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