编辑:似乎我终于使它起作用了。我问了我之前提到的那位帖子的作者,他说这是一个已知问题。他还给了mi一个解决方法(在帖子下方的评论中),因此我认为此问题已结束。但是感谢你们所有人花时间解决我的问题:)
我正在尝试使用Caliburn Micro框架学习MVVM,但是从一开始我就遇到了问题。我正在遵循this教程,并且在App.xaml中得到了这样的代码:
<Application
x:Class="Caliburn.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
xmlns:caliburnMicro="clr-namespace:Caliburn">
<!--Application Resources-->
<Application.Resources>
<caliburnMicro:Bootstrapper x:Key="bootstrapper" />
</Application.Resources>
</Application>
但我得到一个错误:
名称空间“ clr-namespace:Caliburn”中不存在名称“ Bootstrapper”。
我从NuGet存储库中获得了Caliburn Micro 1.5.2。任何想法表示赞赏...
我的引导者:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Caliburn.Micro;
namespace Caliburn
{
public class Bootstrapper : PhoneBootstrapper
{
PhoneContainer container;
protected override void Configure()
{
container = new PhoneContainer();
container.RegisterPhoneServices(RootFrame);
//container.PerRequest<MainPageViewModel>();
AddCustomConventions();
}
static void AddCustomConventions()
{
//ellided
}
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);
}
}
}
最佳答案
您应该定义自己的Bootstrapper类型,该类型派生自Caliburn.Micro bootstrapper类型之一。然后,应用程序资源中的资源应该是该引导程序的实例。
学习时最简单的选择是使用Caliburn.Micro.Start NuGet package,并查看其引导程序实现。 documentation还描述了应在App.xaml文件中使用的标记。
关于c# - Caliburn.Micro在App.xaml的命名空间中没有“Bootstrapper”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17548729/