在Application_Startup方法中创建的WPF窗口是空白的

时间:2013-07-03 02:13:12

标签: c# .net wpf

我在项目中有一个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();
        }
    }

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

enter image description here

2 个答案:

答案 0 :(得分:10)

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

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

我通常希望对某些事情有效或无效的原因进行一些解释。在这种情况下,我不知道。我可以看到在线示例不包含InitializeComponent,但我会产生与您相同的确切错误(没有检查args的事件)。

答案 1 :(得分:0)

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