2011-08-15 7 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의 벌금을,로드하지만 난 다음에 이동하고 다른 뷰/뷰 모델 설정을하고자했다 하지만 내 인생 내가 (내가 WP7의 NavigationService했던 것처럼)이 창 관리자가 더 많은보기를로드하기 위해 내 뷰 모델에 통과하려면 여기를

내 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은 항상 null입니다. 인터넷에서 검색 한 결과 WindowManager와 MEFBootStrapper에 대해 뭔가 알고 싶었습니다. WP7에서 사용했던 프레임 워크 컨벤션이 톤보다 나은 것으로 생각되었을 것입니다.

단순 컨테이너는 단지 자신의 사이트에 caliburn.micro에서 제공하는 recipe, 나는 당신이 IOC 컨테이너와 창 관리자를 등록 didnt는 WP7 애플리케이션

답변