2015-06-30 75 views
1

我正在編寫我的第一個Xamarin.Mac應用程序來編寫現有WPF應用程序的mac版本。我將它從我在"Hello, Mac" documentation中讀到的內容中解脫出來。Window Load事件的Xamarin.Mac/Cocoa等價物?

我有幾個地方我想要做的事情,以響應被加載的窗口。在WPF中,我只需將一個事件處理程序附加到窗口的Loaded事件並完成它。

Xamarin.Mac與Cocoa窗口中的等價物是什麼?還是有更好的模式可供使用?我在Window和WindowController類上看到了各種Did *事件,但沒有「DidLoaded」事件或任何看似相似的事件。

我不想在構造函數中這樣做,因爲它們可能需要一段時間,我不想阻止窗口顯示 - 我希望窗口首先出現,然後開始這些操作。

任何指導?

回答

2

從同一指南中,您應該將此重寫添加到您的MainWindow類。

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

我們需要使用AwakeFromNib,而不是另一種方法,如 初始化,因爲操作系統加載和 實例從文件的.xib用戶界面後AwakeFromNib被調用。如果我們試圖在.xib文件完全加載 並實例化之前嘗試訪問標籤控件,我們會得到一個NullReferenceException錯誤,因爲 標籤控件不會被創建。