Je suis nouveau sur Prism et j'essaye d'héberger un contrôle Prisim dans un ElementHost. Il me semble qu'il manque quelque chose de très basique. J'ai un seul WinForm qui contient un ElementHost. Le code suivant est sous la forme:Comment utiliser Prisim dans un ElementHost
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
Bootstrapper bootstrapper = new Bootstrapper();
bootstrapper.Run();
var child = bootstrapper.Container.Resolve<Shell>();
elementHost.Child = child;
}
Le BootStrapper gère regisration
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;
}
}
Le MyView.xaml est rien de plus qu'une étiquette à ce stade.
Shell.xaml est un UserControl qui contient le code XAML suivant:
<ItemsControl Name="MainRegion" cal:RegionManager.RegionName="MainRegion" />
Le code du module est minimal:
public class MyModule : IModule
{
private readonly IRegionViewRegistry _regionViewRegistry;
public MyModule(IRegionViewRegistry registry)
{
_regionViewRegistry = registry;
}
public void Initialize()
{
_regionViewRegistry.RegisterViewWithRegion("MainRegion", typeof(MyView));
}
}
J'ai traçais profondément dans le code Prism essayant de comprendre pourquoi la vue n'est jamais définie dans la région. Est-ce que je manque quelque chose de basique?
Vous faites ma journée. Ce hack curieux fonctionne pour moi aussi :-) –