Caliburn microwpf窗口管理
本文关键字:管理 窗口 microwpf Caliburn | 更新日期: 2023-09-27 18:05:40
我想使用caliburn启动一个WPF应用程序。为了尽可能多地使用TDD,我使用了caliburn。micro之前在WP7上做过,但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<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)
这是我的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总是null,当我在互联网上搜索解决方案时,我发现它确实是我想要利用的WindowManager,以及关于MEFBootStrapper的一些东西?但我本以为我在WP7上使用的框架约定会比看起来要好得多。
Simple Container只是caliburn提供的配方。和我在WP7应用程序中使用的
您没有向IOC容器注册WindowManager。请看一下caliburn . micro . helloindowmanager示例项目。
你可以在这里下载:http://caliburnmicro.codeplex.com/releases/view/70940