C# 在应用程序启动方法中创建的WPF窗口为空

C# 在应用程序启动方法中创建的WPF窗口为空,c#,.net,wpf,C#,.net,Wpf,我在一个项目中有一个WPF窗口,其中包含一个XAML文件和相关的C#代码隐藏文件。如果我将App.xaml中的“StartupUri=MainWindow.xaml”设置为此窗口,则当我启动应用程序时,该窗口将按预期打开 但是,我希望我的应用程序获取命令行参数,然后决定是否应该打开GUI。因此,我在App.xaml文件中设置了“Startup=Application\u Startup”,其定义如下所示 private void Application_Startup(object se

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

但是,我希望我的应用程序获取命令行参数,然后决定是否应该打开GUI。因此,我在App.xaml文件中设置了“Startup=Application\u 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();
        }
    }
然而,当我运行这个时,显示的窗口是完全空白的


添加
窗口。InitializeComponent()
似乎可以实现以下目的:

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

我通常喜欢有一个小的解释,解释为什么有些东西起作用或不起作用。我对这件事一无所知。我可以看到在线示例不包括InitializeComponent,但是我产生了与您相同的错误(事件未检查args)。

我创建了一个示例应用程序,删除了StartupUri,并将启动设置为您提供的方法。一切似乎都按预期进行,窗口的内容显示出来,因此,正如Daniel提到的,您缺少对MainWindow构造函数中InitializeComponent方法的调用。

可能重复的不是默认情况下在MainWindow构造函数中调用的InitializeComponent方法吗?您可能刚刚从
MainWindow
类的构造函数中删除了
InitializeComponent
。这是在设计器生成的代码(您可能已经发现的MainWindow.g.cs文件)中运行代码所必需的!是的,我必须从构造函数中删除InitializeComponent()。将其添加回修复了问题。有人能解释为什么我使用StartupUri时它能工作吗?