从win表单

时间:2016-11-01 14:28:24

标签: c# wpf winforms prism

我们正在开发一个部分用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();
}

0 个答案:

没有答案