8

我在一个项目中有一个 WPF 窗口,其中包含一个 XAML 文件和关联的 C# 代码隐藏文件。如果我在 App.xaml 中将“StartupUri=MainWindow.xaml”设置为此窗口,则当我启动我的应用程序时,该窗口将按预期打开。

但是,我希望我的应用程序采用命令行参数,然后决定它是否应该打开 GUI。因此,我在我的 App.xaml 文件中设置了“Startup=Application_Startup”,该文件的定义如下所示。

    private void Application_Startup(object sender, StartupEventArgs e)
    {
        if (e.Args.Length > 1)
        {
            //do automated tasks
        }
        else
        {
            //open ui

           MainWindow window = new MainWindow();
            this.MainWindow = window;

            window.Show();
        }
    }

然而,当我运行它时,显示的窗口完全是空白的。

在此处输入图像描述

4

2 回答 2

10

添加window.InitializeComponent()似乎可以解决问题:

            MainWindow window = new MainWindow();
            Application.Current.MainWindow = window;
            window.InitializeComponent();
            window.Show();

我通常喜欢对某些东西为什么起作用或不起作用做一点解释。在这种情况下,我不知道。我可以看到在线示例不包括 InitializeComponent,但是我产生了与您一样的确切错误(事件没有检查 args)。

于 2013-07-03T04:33:21.323 回答
0

我创建了一个示例应用程序,并删除了 StartupUri 并将 Startup 设置为您提供的方法。一切似乎都按预期工作,显示了窗口的内容,所以也许,正如 Daniel 所提到的,您在 MainWindow 构造函数中缺少对 InitializeComponent 方法的调用。

于 2013-07-03T08:52:16.377 回答