我是 Prism 的新手,我正在尝试在 ElementHost 中托管一个 Prisim 控件。我似乎遗漏了一些非常基本的东西。我有一个包含 ElementHost 的 WinForm。以下代码采用以下形式:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
Bootstrapper bootstrapper = new Bootstrapper();
bootstrapper.Run();
var child = bootstrapper.Container.Resolve<Shell>();
elementHost.Child = child;
}
BootStrapper 处理注册
public class Bootstrapper : UnityBootstrapper
{
protected override DependencyObject CreateShell()
{
Container.RegisterType<MyView>();
var shell = Container.Resolve<Shell>();
return shell;
}
protected override IModuleCatalog GetModuleCatalog()
{
ModuleCatalog catalog = new ModuleCatalog();
catalog.AddModule(typeof(MyModule));
return catalog;
}
}
此时 MyView.xaml 只不过是一个标签。
Shell.xaml 是一个包含以下 XAML 的 UserControl:
<ItemsControl Name="MainRegion" cal:RegionManager.RegionName="MainRegion" />
模块代码最少:
public class MyModule : IModule
{
private readonly IRegionViewRegistry _regionViewRegistry;
public MyModule(IRegionViewRegistry registry)
{
_regionViewRegistry = registry;
}
public void Initialize()
{
_regionViewRegistry.RegisterViewWithRegion("MainRegion", typeof(MyView));
}
}
我一直在深入研究 Prism 代码,试图找出为什么 View 从未设置到该区域中。我错过了一些基本的东西吗?