对 Prismv4 和 MEF 来说有点新。
我浏览了快速入门并尝试将其中两个组合在一起,但我似乎无法使其正常工作。
首先,我有一个引导程序来加载 Shell 窗口。
public sealed class ClientBootstrapper : MefBootstrapper
{
protected override void ConfigureAggregateCatalog()
{
base.ConfigureAggregateCatalog();
//Add this assembly to export ModuleTracker (Shell is in this Assembly).
AggregateCatalog.Catalogs.Add(new AssemblyCatalog(Assembly.GetExecutingAssembly()));
}
protected override DependencyObject CreateShell()
{
return Container.GetExportedValue<Shell>();
}
protected override void InitializeShell()
{
base.InitializeShell();
Application.Current.MainWindow = (Window)Shell;
Application.Current.MainWindow.Show();
}
}
这工作得很好。显示了 Shell 窗口,并出现了一条漂亮的 Hello World 消息。然后我尝试在 Shell 窗口内创建一个区域,以便将视图加载到该区域中。我什至还没有开始工作,甚至没有考虑将其移至外部组件。
[ModuleExport(typeof(HelloWorldModule), InitializationMode = InitializationMode.OnDemand)]
public class HelloWorldModule : IModule
{
[Import(AllowRecomposition = true)]
private IRegionViewRegistry regionViewRegistry;
[ImportingConstructor()]
public HelloWorldModule(IRegionViewRegistry registry)
{
this.regionViewRegistry = registry;
}
public void Initialize()
{
regionViewRegistry.RegisterViewWithRegion("PrimaryRegion", typeof(Views.HelloWorldView));
}
}
HelloWorld 视图(只是一个包含 TextBlock 的简单 UserControl)没有被加载到该区域中!我想我对如何在我的地区加载有点迷失了。