我发现了一些相当奇怪的行为......
以下是如何复制问题:
- 创建 WPF 应用程序项目。
- 从 App.xaml 文件中删除 StartupUri。
- 将启动事件处理程序添加到带有签名“
private void Application_Startup(object sender, StartupEventArgs e)
”的应用程序 - 现在,向项目添加一个表单(右键单击并选择添加新项目)。
- 在 Application_Startup 方法中,创建表单对象并将其显示为
Form1 f1 = new Form1(); f1.ShowDialog();
- 在实际的 Form1 上,向设计器添加一个按钮,并向该按钮添加一个单击事件处理程序。
- 将一个新的 WPF 窗口添加到您的项目 Window1。
- 在步骤 6 中创建的 Form1 的按钮单击事件处理程序中,添加创建显示 WPF 窗口的代码行:
Window1 w1 = new Window1(); w1.Show();
- 运行项目并单击 winform 上的按钮以显示 WPF 窗口...到目前为止工作正常。
- 关闭 WPF 窗口并再次单击 winform 的按钮。这次你应该得到异常。
所以,基本上我所做的是创建一个显示 winform 的 WPF 应用程序。然后,winform 显示一个 WPF 窗口。
第一次显示 WPF 窗口时,一切正常。如果它被关闭,然后重新打开,我得到异常!我还可以通过多次单击该按钮来打开多个 WPF 窗口。但是,一旦最后一个关闭了,我就再也不能再打开另一个了...
我还尝试了http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/442782b1-00a1-4e2e-9cc6-ae99b6699126/建议的各种技巧,但这些都没有帮助。
为什么会这样?