Xamarin.Mac / Cocoa相当于Window Loaded事件?

时间:2015-06-30 18:35:11

标签: c# macos cocoa xamarin xamarin.mac

我正在开发我的第一个Xamarin.Mac应用程序来编写现有WPF应用程序的mac版本。我基于我在"Hello, Mac" documentation中读到的内容。

我有几个地方我想做的事情是为了响应窗口的加载。在WPF中,我只是将一个事件处理程序附加到窗口的Loaded事件中并完成它。

Xamarin.Mac与Cocoa窗口的相同之处是什么?或者是否有更好的模式可供使用?我在Window和WindowController类上看到了各种Did *事件,但是没有“DidLoaded”事件或类似的任何东西。

我不想在构造函数中执行它,因为它们可能需要一段时间而且我不想阻止窗口显示 - 我希望窗口首先出现在那里然后我开始这些事情。

任何指导?

1 个答案:

答案 0 :(得分:2)

在同一指南中,您应该将此覆盖添加到MainWindow类。

public override void AwakeFromNib ()
{
    base.AwakeFromNib ();
    // enter code here
}
  

我们需要使用AwakeFromNib,而不是使用其他方法   初始化,因为在OS加载后调用了AwakeFromNib   从.xib文件中实例化用户界面。如果我们试图   在.xib文件完全加载之前访问标签控件   并实例化,我们得到一个NullReferenceException错误,因为   标签控件尚未创建。