我正在开发我的第一个Xamarin.Mac应用程序来编写现有WPF应用程序的mac版本。我基于我在"Hello, Mac" documentation中读到的内容。
我有几个地方我想做的事情是为了响应窗口的加载。在WPF中,我只是将一个事件处理程序附加到窗口的Loaded事件中并完成它。
Xamarin.Mac与Cocoa窗口的相同之处是什么?或者是否有更好的模式可供使用?我在Window和WindowController类上看到了各种Did *事件,但是没有“DidLoaded”事件或类似的任何东西。
我不想在构造函数中执行它,因为它们可能需要一段时间而且我不想阻止窗口显示 - 我希望窗口首先出现在那里然后我开始这些事情。
任何指导?
答案 0 :(得分:2)
在同一指南中,您应该将此覆盖添加到MainWindow类。
public override void AwakeFromNib ()
{
base.AwakeFromNib ();
// enter code here
}
我们需要使用AwakeFromNib,而不是使用其他方法 初始化,因为在OS加载后调用了AwakeFromNib 从.xib文件中实例化用户界面。如果我们试图 在.xib文件完全加载之前访问标签控件 并实例化,我们得到一个NullReferenceException错误,因为 标签控件尚未创建。