即使我注释掉InitializeComponent()调用,窗口也会正确显示

时间:2013-12-10 17:02:58

标签: c# .net wpf xaml

我正在阅读Adam Nathan的书“WPF 4 Unleashed”,第46页有以下警告:

  

不要忘记在代码隐藏类的构造函数中调用InitializeComponent!如果你没有这样做,你的根元素就不会   包含您在XAML中定义的任何内容(因为   相应的BAML没有加载)和所有字段   表示命名对象元素将为null。

我在主窗口的XAML中有以下代码:

<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                x:Class="WpfApplication2.MainWindow">
...

包含MainWindow类的代码隐藏文件:

namespace WpfApplication2
{
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            //InitializeComponent();
        }
    }
}

如您所见,InitializeComponent()调用已注释掉。但是当我运行应用程序时,我的主窗口已加载并正确显示,其上包含所有控件,依此类推。

为什么呢?我以为我会看到空窗口?

更奇怪的是,当我在项目中添加第二个窗口时:

<Window x:Class="WpfApplication2.Window1"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
...

namespace WpfApplication2
{
    public partial class Window1 : Window
    {
        public Window1()
        {
            //InitializeComponent();
        }
    }
}

当InitializeComponent()调用被注释掉时,我看到空窗口,如果没有注释掉对InitializeComponent()的调用,则会显示带有控件的窗口。为什么呢?

如果重要,项目的目标框架是3.5。

0 个答案:

没有答案