2011-08-15 73 views
3

我想開始使用caliburn.micro的WPF應用程序,所以我可以儘可能使用TDD,我之前用WP7使用caliburn.micro,但WPF似乎是不同的船,並且文檔並不像WP7那樣完整。Caliburn微型WPF窗口管理

我已經建立了項目與我的引導程序

public class ApplicationBootstrapper : Bootstrapper 
{ 
    private SimpleContainer _container; 
    private WindowManager _windowManager; 

    protected override void Configure() 
    { 
     _container = new SimpleContainer(); 
     _windowManager = new WindowManager(); 

     _container.RegisterSingleton(typeof(MainViewModel), "MainViewModel", typeof(MainViewModel)); 
     _container.RegisterSingleton(typeof(DataViewModel), "DataViewModel", typeof(DataViewModel)); 

    } 

    protected override object GetInstance(Type service, string key) 
    { 
     return _container.GetInstance(service, key); 
    } 

    protected override IEnumerable<object> GetAllInstances(Type service) 
    { 
     return _container.GetAllInstances(service); 
    } 

    protected override void BuildUp(object instance) 
    { 
     _container.BuildUp(instance); 
    } 

    protected override void OnStartup(object sender, System.Windows.StartupEventArgs e) 
    { 
     _windowManager.ShowWindow(_container.GetInstance(typeof(MainViewModel), "MainViewModel")); 
    } 
} 

,這加載的MainView罰款,這讓我覺得我贏了,但當時我想繼續前進,並有另一種看法/視圖模型設置但對我的生活,我不能得到的窗口管理器,通過以裝載更多的意見傳遞給我的視圖模型(我用的NavigationService在WP7一樣)

這裏是我的MainViewModel代碼

public class MainViewModel : BaseViewModel 
{ 
    private readonly DataViewModel _dataViewModel; 
    private readonly IWindowManager _windowManager; 


    public MainViewModel(IWindowManager windowManager, DataViewModel dataViewModel) 
    { 

     _dataViewModel = dataViewModel; 
     _windowManager = windowManager; 
    } 

    public string Title { get { return ApplicationTitle; } } 

    public void BtnNew() 
    { 
     System.Diagnostics.Debug.WriteLine(_windowManager == null); 

    } 

    public void BtnLoad() 
    { 
     MessageBox.Show("Sorry, not yet implemented"); 
    } 
} 

但是窗口管理器和DataViewModel總是空的,當我搜索互聯網尋找解決方案時,我發現它確實是我想要利用的WindowManager,還有一些關於MEFBootStrapper的內容?但我會認爲我在WP7上使用的框架公約會比現在好轉一噸。

的簡單容器是隻是caliburn.micro在其網站上提供的recipe,我在WP7應用

回答