一般来说,我之前一直在初始化Window自身的属性,然后InitializeComponent()设置其中包含的控件.但是,我并没有那么一致,我没有真正注意到订购的问题.所以:
InitializeComponent()?编辑:由于我得到的前两个答案有点矛盾,让我更具体一点:
public Foo Foo {get; protected set}
public FooWindow (Foo foo)
{
Foo = foo;
this.Closing += FooWindow_Closing;
Foo.Frobbed += Foo_Frobbed;
InitializeComponent();
this.DataContext = this;
this.Title = Foo.Name() + " Window";
FooListView.ItemSource = Foo.CalculateList();
FocusManager.SetFocusedElement(this, FooListView);
}
Run Code Online (Sandbox Code Playgroud)
这是对的吗?我应该只是做MVVM而在Window构造函数中没有任何东西吗?
通过在一些其他代码之后调用InitializeComponents,您将冒着用XAML中设置的内容意外覆盖属性或使用未初始化对象的风险。通常,后面的代码比XAML具有更高的优先级,因此我将InitializeComponents(又名,解析并加载XAML)放在顶部。