WPF Caliburn Micro Bootstrapper 未从另一个项目中找到实例

问题描述 投票:0回答:0

Caliburn.Micro 版本 4.0.212。 项目版本.NET6

使用 Caliburn.Micro 3.0 和 .Net Framework 4.7.2 即可工作

当我尝试打开位于另一个项目中的简单 viewModel 时,出现错误:“该组件没有由 URI 标识的资源” 我正在使用 Caliburn Micro 示例:https://github.com/Caliburn-Micro/Caliburn.Micro/tree/master/samples/tutorals/WPF/Wpf.Tutorial

为了重现该错误,我为解决方案创建了另一个项目:“CommonView” 我将 AboutViewModel 从主项目移至此项目,如下图所示:

Solution Explorer View

在引导程序中,我需要修改 SelectAssemblies 方法以添加此新项目中的文件

protected override IEnumerable<Assembly> SelectAssemblies()
         {
             var assemblies = new List<Assembly>();
             assemblies.AddRange(base.SelectAssemblies());

             string[] fileEntries = Directory.GetFiles(Directory.GetCurrentDirectory());

             foreach (string fileName in fileEntries)
             {
                 if (!fileName.Contains(".conf") && fileName.Contains("CommonView.dll"))
                 {
                     assemblies.Add(Assembly.LoadFile(fileName));
                 }
             }

             return assemblies;
         }

现在,当我从按钮调用 About 类时,Caliburn 尝试获取实例,但未找到,因此出现错误。

protected override object GetInstance(Type service, string key)
          {
                var instance = _container.GetInstance(service, key);    
                //instance is null
                return instance;
          }

但是,如果我在调用 CategoryViewModel 时进行调试,它会正确返回实例

我看到这篇文章,其中 Juan Carlos 重写了 InitializeComponent(),但我认为它应该有一个更简单的方法:该组件没有由 uri 标识的资源

提前谢谢您。 问候

c# .net wpf caliburn.micro bootstrapper
© www.soinside.com 2019 - 2024. All rights reserved.