C# 找不到视图模型的视图

C# 找不到视图模型的视图,c#,wpf,mvvm,caliburn.micro,C#,Wpf,Mvvm,Caliburn.micro,我无法使用Caliburn.Micro找到任何视图。启动程序会启动,但随后会出现一个通用窗口,显示没有任何用于ShellViewModel的视图,即使存在ShellView.xaml。你怎么办 引导程序 public sealed class AppBootstrapper : BootstrapperBase { private IKernel _kernel; #region Bootstrapper public AppBootstrapper()

我无法使用Caliburn.Micro找到任何视图。启动程序会启动,但随后会出现一个通用窗口,显示没有任何用于ShellViewModel的视图,即使存在ShellView.xaml。你怎么办

引导程序

public sealed class AppBootstrapper : BootstrapperBase
{


    private IKernel _kernel;

    #region Bootstrapper

    public AppBootstrapper()
    {
        Start();
    }

    protected override void Configure()
    {
        _kernel = new StandardKernel();
        _kernel.Bind<IWindowManager>().To<WindowManager>().InSingletonScope();
        _kernel.Bind<IEventAggregator>().To<EventAggregator>().InSingletonScope();
        _kernel.Bind<IShell>().To<ShellViewModel>();
    }

    protected override void OnStartup(object sender, System.Windows.StartupEventArgs e)
    {
        DisplayRootViewFor(typeof (IShell));
    }

    protected override void OnExit(object sender, EventArgs e)
    {
        _kernel.Dispose();
        base.OnExit(sender, e);
    }

    protected override object GetInstance(Type serviceType, string key)
    {
        if (serviceType != null) {
            return _kernel.Get(serviceType);
        }

        throw new ArgumentNullException("serviceType");
    }

    protected override IEnumerable<object> GetAllInstances(Type serviceType)
    {
        return _kernel.GetAll(serviceType);
    }

    protected override void BuildUp(object instance)
    {
        _kernel.Inject(instance);
    }

    #endregion

    }
}

您可能需要使用SelectAssembly的覆盖来告诉CM视图和视图模型的“.dll”在哪里。否则它将永远找不到它们。我通常也会在我的项目中使用它,它会解决您的问题。

日志记录是否打开?@DerekBeattie In Caliburn?我如何做到这一点?您是否在App.xaml中的应用程序元素中意外设置了StartupUri?@DerekBeattie好的,明白了。Caliburn发布了“未找到视图。已搜索:MyProject.ShellView”。不幸的是,由于我的项目中有一个ShellView.xaml,因此我什么也找不到/能否在xaml中再次检查视图的名称空间?
 public sealed class ShellViewModel : Screen, IShell
{

    public ShellViewModel()
    {
        DisplayName = "Hello";
    }

}