2011-08-15 14 views
3

私はできるだけTDDを使用できるようにcaliburn.microを使用してWPFアプリケーションを開始したいと思っています。以前はWP7でcaliburn.microを使用しましたが、WPFは別の船であるようですが、その文書はWP7ほど完全ではありません。Caliburn Micro 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の罰金を、ロードしますが、私は、その後に移動し、別のビュー/のviewmodelのセットアップを持っているしたきましたしかし、私の人生のために私は(私はWP7でのNavigationServiceで行ったように)、ウィンドウマネージャは、複数のビューをロードするために私のViewModelに通過したことをここで

は私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"); 
    } 
} 

しかし、Window MangerとDataViewModelは常にヌルです。インターネットで検索したところ、私が利用したかったWindowManagerと、MEFBootStrapperについての情報が見つかりましたか? WP7で使用していたフレームワークの枠組みは、それよりも一歩前進していると思っていたでしょう。

単純なコンテナがあるだけで自分のサイトにcaliburn.microによって提供さrecipe、と私はあなたがIOCコンテナとウィンドウマネージャを登録didntのWP7アプリケーション

答えて

3

で使用したもの。 Caliburn.Micro.HelloWindowManagerサンプルプロジェクトを見てください。あなたがここにそれをダウンロードすることができ

http://caliburnmicro.codeplex.com/releases/view/70940

+0

おかげで、私は自分に代わって起こって手のひらを顔に当てるを感じる:) – Technicolour

関連する問題