canvas load 事件是否在预期的其他事件之后发生?

Is canvas load event occurring after other events expected?

我不清楚订阅 xaml 中的事件时事件的顺序是什么。我不确定为什么,但我的 canvas1_SizeChanged 事件先发生,并导致空引用异常,因为 image 尚未初始化,因为 Loaded 事件尚未发生。我可能最终只是将 canvas1_SizeChanged 事件订阅移动到 Loaded 处理程序,但是,我仍然很好奇为什么时间是这样的。下面是显示我的问题的代码片段。

在xaml中:

<Canvas Name="canvas1" Loaded="canvas1_Loaded" SizeChanged="canvas1_SizeChanged">

在xaml.cs中:

 private Image image;
 private void canvas1_Loaded(object sender, RoutedEventArgs e)
 {
     image = new Image();
 }

 private void canvas1_SizeChanged(object sender, SizeChangedEventArgs e)
 {
      content = image.Content;
 }

正常范式是这样的:

  1. 调用控件构造函数。
  2. 设置控件属性(位置、大小、事件处理程序等)
  3. 将控件添加到父控件(如果不是父控件本身)
  4. 显示父级

在第 2 步,您将收到对 canvas1_SizeChanged 事件处理程序的调用。

只有在第 4 步之后才会调用 eh canvas_Loaded 事件处理程序