我们正在开发一个部分用Win Forms编写的大型应用程序。从某个时候起,我们会将一些窗口重写为WPF,我们会以这种方式调用它:
SomeWindow window = new SomeWindow(someParameters);
window.ShowDialog();
最近我们想以类似的方式使用PRISM和MahApps,但没有成功。
所以我尝试了以下内容:
private void button1_Click(object sender, EventArgs e)
{
var app = new SomePrism.App();
app.Run();
}
这是启动应用程序,但如果我想再次打开它,我将收到以下异常:
无法在同一AppDomain中创建多个System.Windows.Application实例。
我尝试使用Multiple WPF applications in the same AppDomain的回答但没有成功(当我尝试再次打开WPF应用时,Application.Current为空,但仍然会发生异常)。
我还想暂停'胜利形成,直到用户完成WPF的工作,就像你在显示对话框时一样。
有人知道这是否可能,如果可能的话,如何以适当的方式实现这一目标?
修改
我找到了解决方案。而不是像下面的Bootstrapper一样使用InitializeShell:
protected override void InitializeShell()
{
Application.Current.MainWindow.Show();
}
我用以下方式写了它:
protected override void InitializeShell()
{
var window = Container.Resolve<MainWindow>();
window.ShowDialog();
}