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;
}
正常范式是这样的:
- 调用控件构造函数。
- 设置控件属性(位置、大小、事件处理程序等)
- 将控件添加到父控件(如果不是父控件本身)
- 显示父级
在第 2 步,您将收到对 canvas1_SizeChanged
事件处理程序的调用。
只有在第 4 步之后才会调用 eh 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;
}
正常范式是这样的:
- 调用控件构造函数。
- 设置控件属性(位置、大小、事件处理程序等)
- 将控件添加到父控件(如果不是父控件本身)
- 显示父级
在第 2 步,您将收到对 canvas1_SizeChanged
事件处理程序的调用。
只有在第 4 步之后才会调用 eh canvas_Loaded
事件处理程序