Caliburn.Mikro nicht "Bootstrapper" in einem namespace in der App.xaml
EDIT: Es scheint, dass ich es endlich geschafft, zu arbeiten. Ich fragte ein Autor, der post bezog ich mich vor und er sagte, dass es ein bekanntes Problem. Er gab auch mi einen workaround (in dem Kommentar unter dem post), so halte ich diese Frage als geschlossen. Aber danke Euch allen für die aufgewendete Zeit, mit meinen Problemen 🙂
Ich versuche zu lernen MVVM mit Caliburn Micro framework, aber ich habe Probleme von Anfang an. Ich bin folgenden diese - tutorial, und ich habe mal so einen code in einer 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>
Aber ich bekam eine Fehlermeldung:
Dem Namen "Bootstrapper" nicht vorhanden ist im namespace "clr-namespace:Caliburn".
Ich habe Caliburn Micro 1.5.2 von NuGet-repository. Alle Ideen dankbar...
Meine Bootstrapper:
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);
}
}
}
- Vermutlich haben Sie die
Bootstrapper
Klasse und es befindet sich in derCaliburn
namespace? - Was meinst du mit 'in den
Caliburn
namespace? Ich habenamespace Caliburn { [...] }
in der Klasse und es ist in der Wurzel von Caliburn Projekt in Lösung. xmlns:caliburnMicro="clr-namespace:Caliburn;assembly=Caliburn.Micro"
zuerst aus, wenn die Bootstrapper-Typ liegt (und öffentlich ist und nicht Abstrakt und hat einen öffentlichen Konstruktor) in der Caliburn.Micro.dll Montage.- Wenn ich das geändert, Linie, bekam ich einen weiteren Fehler:
Undefinied CLR namespace
. - Sorry, ich war nicht besonders klar. Ich war gerade versucht zu machen sicher, Sie würden definiert Ihre eigenen
Bootstrapper
Art, wie in dem tutorial, und es wurde in den richtigen namespace (der Fehler scheint nahe zu legen, es kann nicht gefunden werden). Wird die Beratung über die keywords lohnt. - geben Sie Ihre bootstraper
- Sie vergessen Sie nicht, ändern Sie App.xaml.cs?
- Nein, ich bin nicht. Ich ändern, dass wie in dem tutorial habe ich gelesen. Bootstrapper bereitgestellt.
- Also was ist die Lösung?
- Ich habe das gleiche problem, und es ist nicht klar, was die Lösung ist
- In meinem Fall war ich mit und verweisen auf "Caliburn" - Paket von Nuget (legacy), habe es gelöst durch den Wechsel zu "Caliburn.Micro" (aktuelle Entwicklung)
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sollten Sie definieren Ihre eigene Bootstrapper-Typ leitet sich von einer der Caliburn.Micro-bootstrapper-Typen. Die Ressource in Ihrer Anwendung Ressourcen sollte dann eine Instanz dieser bootstrapper.
Ist die einfachste Möglichkeit beim lernen ist die Verwendung der Caliburn.Micro.Starten Sie NuGet-Paket, und haben einen Blick auf seine bootstrapper Umsetzung. Die Dokumentation beschreibt auch die markup, die Sie verwenden sollten in Ihrer App.der xaml-Datei.
Ich denke, alle sind verwirrt, weil Sie mit dem Namen Ihres eigenen Namensraums
caliburn
so dass Sie so dachte, Sie versuchen, erstellen Sie eine Instanz von framework bootstrapper, so schlage ich vor zu ändern, Ihren Namenskonventionen. Mit diesem aus dem Weg, statt der bootstrapper direkt in die Ressourcen der Anwendung, versuchen Sie, ihn in eine Ressource dictionary wie diese:Ich hatte das gleiche problem und leicht zu lösen. Sie müssen das überschreiben der Methode OnStart in Ihr Bootstrapper Klasse und in diese Methode gesetzt, die Ihr root-Ansicht.