Właśnie uczę się WPF i Caliburn.Micro. Postępuję zgodnie z przedstawionym tutaj kodem: http://caliburnmicro.codeplex.com/wikipage?title=Customizing%20The%20Bootstrapper&referringTitle=DocumentationCaliburn.Micro i MEF na wpf
Podobno ten kod jest przeznaczony dla Silverlight, ale mój projekt jest WPF iz tego powodu otrzymuję błąd, że CompositionHost nie jest zdefiniowany.
W dokumencie stwierdzono, że muszę zainicjować kontener bezpośrednio w wpf, ale nie ma dokumentu, który wskazywałby, w jaki sposób. Jak mogę zainicjować kontener bezpośrednio?
Edycja 1 byczek rozruchowy jest podobny do tego w dokumentacji:
container = CompositionHost.Initialize(
new AggregateCatalog(
AssemblySource.Instance.Select(x => new AssemblyCatalog(x)).OfType<ComposablePartCatalog>()
)
);
var batch = new CompositionBatch();
batch.AddExportedValue<IWindowManager>(new WindowManager());
batch.AddExportedValue<IEventAggregator>(new EventAggregator());
batch.AddExportedValue(container);
container.Compose(batch);
i przekształcono go:
var catalog =
new AggregateCatalog(
AssemblySource.Instance.Select(x => new AssemblyCatalog(x)).OfType<ComposablePartCatalog>());
this.container = new CompositionContainer(catalog);
var batch = new CompositionBatch();
batch.AddExportedValue<IWindowManager>(new WindowManager());
batch.AddExportedValue<IEventAggregator>(new EventAggregator());
batch.AddExportedValue(this.container);
this.container.Compose(batch);
Ale kiedy uruchomić aplikację, otrzymuję błąd, który MEF nie może znajdź implementację dla IShell
Could not locate any instances of contract IShell.
Uwierzę w moją inicjalizację M EF nie jest poprawne. Czy możesz mi pomóc to naprawić?
Dzięki. Zobacz moją edycję do zadawania pytań. – mans
@mans Proszę zobaczyć aktualizację mojej odpowiedzi. –