gpt4 book ai didi

c# - Caliburn Micro WPF 窗口管理

转载 作者:行者123 更新时间:2023-11-30 16:28:30 28 4
gpt4 key购买 nike

我想使用 caliburn.micro 启动一个 WPF 应用程序,这样我就可以尽可能多地使用 TDD,我之前在 WP7 中使用过 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<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,这让我觉得我赢了,但我当时想继续并进行另一个 View / View 模型设置,但对于我来说,我无法将 WindowManager 传递到我的 ViewModel为了加载更多 View (就像我在 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 总是空的,当我在互联网上搜索解决方案时,我发现它确实是我想利用的 WindowManager,还有关于 MEFBootStrapper 的东西?但我原以为我在 WP7 上使用的框架约定会比看起来好很多。

简单容器就是recipe由 caliburn.micro 在他们的网站上提供,我在 WP7 应用程序中使用的那个

最佳答案

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

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

关于c# - Caliburn Micro WPF 窗口管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7061595/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com