我在 ElementHost 控件中托管 WPF prism 应用程序时遇到问题,迫切需要帮助。
PRISM 应用程序在 silverlight 和独立 WPF 中运行良好。
主 Shell 似乎在 WinForm 上的 elementHost 中设置得很好,但是其他视图只加载“RegisterViewWithRegion”而不是“Add,Activate”过程。我需要“添加,激活”来确定范围。但是我相信问题是我加载了我的 shell 两次……不是故意的。如果不调用两次“Resolve”,我找不到调用引导程序并设置 elementHot 的方法。
这是我的 WinForm 和引导程序的代码。再次使用“RegisterViewWithRegion”时一切正常。
这是 Winform 构造函数:
public Form1()
{
InitializeComponent();
if (System.Windows.Application.Current == null)
{
new MyApp();
}
Bootstrapper bootStrapper = new Bootstrapper();
bootStrapper.Run();
var shellElement = bootStrapper.Container.Resolve<ShellContainer>();
//Attach the WPF control to the host
elementHost.Child = shellElement;
}
这是引导程序:
public class Bootstrapper : UnityBootstrapper
{
protected override DependencyObject CreateShell()
{
return Container.Resolve<ShellContainer>();
}
protected override void InitializeModules()
{
IModule moduleSurvey = Container.Resolve<SurveyModule>();
moduleSurvey.Initialize();
}
}