【问题标题】:Xamarin.Mac/Cocoa equivalent of Window Loaded event?Xamarin.Mac/Cocoa 相当于 Window Loaded 事件?
【发布时间】:2015-06-30 18:35:10
【问题描述】:

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

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

在带有 Cocoa 窗口的 Xamarin.Mac 中的等效项是什么?还是有更好的模式可以使用?我在 Window 和 WindowController 类上看到了各种 Did* 事件,但没有“DidLoaded”事件或任何类似的事件。

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

有什么指导吗?

【问题讨论】:

    标签: c# macos cocoa xamarin xamarin.mac


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2014-11-20
      • 2011-03-10
      • 2015-02-08
      • 1970-01-01
      • 1970-01-01
      • 2023-03-13
      • 2011-12-14
      • 2010-11-08
      • 1970-01-01
      相关资源
      最近更新 更多