我正在阅读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。