C# Caliburn Micro WPF窗口管理

C# Caliburn Micro WPF窗口管理,c#,wpf,caliburn.micro,C#,Wpf,Caliburn.micro,我想使用caliburn.micro启动一个WPF应用程序,这样我就可以尽可能多地使用TDD,我以前在WP7中使用过caliburn.micro,但WPF似乎是另一个版本,文档也不像WP7那样完整 我已经和我的引导者建立了这个项目 public class ApplicationBootstrapper : Bootstrapper { private SimpleContainer _container; private WindowManager _windowManager

我想使用caliburn.micro启动一个WPF应用程序,这样我就可以尽可能多地使用TDD,我以前在WP7中使用过caliburn.micro,但WPF似乎是另一个版本,文档也不像WP7那样完整

我已经和我的引导者建立了这个项目

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"));
    }
}
但是窗口管理器和DataViewModel总是空的,当我在internet上搜索一个解决方案时,我发现它确实是我想要使用的WindowManager,还有一些关于MefBootTrapper的东西?但我会认为,我在WP7上使用的框架约定会比看起来更好地转移一吨


这个简单的容器就是caliburn.micro在他们的站点上提供的,而我在WP7应用程序中使用的容器

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

你可以在这里下载:

谢谢,我觉得有人在替我做鬼脸:)
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");
    }
}