是否在其他事件发生之后发生画布加载事件?

时间:2016-01-19 23:15:20

标签: c# wpf events canvas loaded

我不清楚在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 个答案:

答案 0 :(得分:2)

正常的范例是:

  1. 呼叫控制构造函数。
  2. 设置控件属性(Location,Size,EventHandlers等)
  3. 将控件添加到父级(如果不是父级控件本身)
  4. 显示父级
  5. 在第2步,你将接到对canvas1_SizeChanged事件处理程序的调用。

    仅在步骤4之后才调用eh canvas_Loaded事件处理程序