/// <summary>
/// MainWindow.xaml 的交互逻辑
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void Window_Activated(object sender, EventArgs e)
{
Debug.WriteLine("触发 WindowActivated 事件");
}
private void Window_Deactivated(object sender, EventArgs e)
{
Debug.WriteLine("触发 WindowDeactivated 事件");
}
protected override void OnClosing(System.ComponentModel.CancelEventArgs e)
{
base.OnClosing(e);
Debug.WriteLine("触发 OnClosing 事件");
}
protected override void OnClosed(EventArgs e)
{
base.OnClosed(e);
Debug.WriteLine("触发 OnClosed 事件");
}
protected override void OnInitialized(EventArgs e)
{
base.OnInitialized(e);
Debug.WriteLine("触发 OnInitialized 事件");
}
public override void BeginInit()
{
base.BeginInit();
Debug.WriteLine("触发 BeginInit 事件");
}
public override void EndInit()
{
base.EndInit();
Debug.WriteLine("触发 EndInit 事件");
}
protected override void OnActivated(EventArgs e)
{
base.OnActivated(e);
Debug.WriteLine("触发 OnActivated 事件");
}
protected override void OnDeactivated(EventArgs e)
{
base.OnDeactivated(e);
Debug.WriteLine("触发 OnDeactivated 事件");
}
protected override void OnContentChanged(object oldContent, object newContent)
{
base.OnContentChanged(oldContent, newContent);
Debug.WriteLine("触发 OnContentChanged 事件");
}
protected override void OnContentRendered(EventArgs e)
{
base.OnContentRendered(e);
Debug.WriteLine("触发 OnContentRendered 事件");
}
}
运行结果是:
触发 BeginInit 事件
触发 OnContentChanged 事件
触发 OnInitialized 事件
触发 EndInit 事件
触发 BeginInit 事件
触发 EndInit 事件
触发 WindowActivated 事件
触发 OnActivated 事件
触发 OnContentRendered 事件
触发 OnClosing 事件
触发 WindowDeactivated 事件
触发 OnDeactivated 事件
触发 OnClosed 事件
请问为何会在初始化时候调用2次BeginInit/EndInit 2次呢?