ElementHost コントロールで WPF プリズム アプリをホストする際に問題があり、助けを求めています。
PRISM アプリは、Silverlight およびスタンドアロン WPF で正常に動作します。
メイン シェルは WinForm の elementHost で正常にセットアップされているようですが、他のビューは「RegisterViewWithRegion」でのみロードされ、「Add,Activate」プロシージャではロードされません。スコーピングには「Add,Activate」が必要です。ただし、シェルを 2 回ロードしていることが問題だと思いますが、意図的ではありません。「Resolve」を 2 回呼び出さずに、ブートラッパーを呼び出して 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();
}
}