编辑:似乎我终于使它起作用了。我问了我之前提到的那位帖子的作者,他说这是一个已知问题。他还给了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/

10-13 06:08