Caliburn Micro WPF窗口管理

我想使用caliburn.micro启动一个WPF应用程序,所以我可以尽可能多地使用TDD,我之前使用过caliburn.micro,而WPF似乎是一个不同的船,文档并不完整就像WP7那样。

我用我的Bootstrapper设置了这个项目

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 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设置但是对于我的生活我无法将WindowManager传递给我的ViewModel以便加载更多视图(就像我在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上使用的框架约定会比现在更好地转移一吨。

Simple Container只是他们网站上的caliburn.micro提供的配方 ,也是我在WP7应用程序中使用的配方

你没有用IOC容器注册WindowManager。 看看Caliburn.Micro.HelloWindowManager示例项目。

你可以在这里下载: http : //caliburnmicro.codeplex.com/releases/view/70940