Caliburn.Micro - 为什么使用UserControl而不是Window

时间:2017-08-14 16:08:11

标签: wpf xaml mvvm user-controls caliburn.micro

我的问题与标题完全一样。 我开始使用Caliburn.Micro进行MVVM方法(这对我来说也是新的),在每个教程中,第一步是删除默认的MainWindow.xaml文件并创建一个新的UserControl文件。这是为什么? UserControl甚至不接受标题。是不是可以使用普通的Windows构建应用程序?我已经尝试过了,但是每次启动都会出现错误“找不到ViewModel的视图”,尽管MainView.xaml和MainViewModel.cs都存在。当我为它创建一对USerControl和ViewModel时,一切都开始按预期工作。再说一遍,为什么Windows不起作用? 它实际上不是一个问题,但我认为像WPF的现代UI主题这样的一些附加功能可能无法在没有窗口的情况下工作。我不确定。

可能一种解决方案是在窗口内显示已定义的UserControl视图,但这只是一种解决方法。

1 个答案:

答案 0 :(得分:1)

您可以通过创建自定义WindowManager

来创建自己的自定义shell窗口
public class CustomWindowManager : WindowManager
{
    protected override Window CreateWindow(object rootModel, bool isDialog, object context, IDictionary<string, object> settings)
    {
        Window window = new Window();
        window.Title = "custom...";
        return window;
    }
}

...你在你的引导程序中注册:

public class HelloBootstrapper : BootstrapperBase
{
    ...

    protected override void Configure()
    {
        _container.Singleton<IWindowManager, CustomWindowManager>();
        ...
    }
}