【发布时间】:2015-08-11 18:10:09
【问题描述】:
此代码不显示窗口,它只是自动关闭。为什么会这样?
class Program
{
[STAThread]
static void Main(string[] args)
{
var window = new MainWindow();
window.ShowDialog();
}
}
我知道你可以通过添加一个新的Application.Run(window) 来修复它,但我想知道它为什么会有这种行为以及为什么你必须在窗口实例上调用 Run 方法。
编辑:
扩展上一个问题,我注意到这段代码可以工作:
- 创建一个新的 WPF 应用程序。
- 转到 App.xaml 并删除 StartupUri
-
修改覆盖方法 OnStartup 的 App.xaml.cs
public partial class App : Application { protected override void OnStartup(StartupEventArgs e) { base.OnStartup(e); var window = new MainWindow(); window.Show(); } }
这样,窗口保持打开状态。引擎盖下发生了什么?
【问题讨论】:
-
这不是 WPF/XAML,而是 Windows 窗体代码。原因:没有
Application.Run就没有消息循环。 -
它是 WPF。 PresentationFramework 的窗口。
-
没有。纯 WPF 应用程序中没有 Main 方法。您可能有一个包含 WPF 窗口的表单应用程序,但您显示的代码(Main 方法)在 WPF 中不存在。