共用方式為


第 6 章的摘要。 按鈕點擊

注意

這本書於2016年春季出版,此後一直沒有更新。 這本書中有很多仍然有價值,但一些材料已經過時,有些主題不再完全正確或完整。

Button是可讓使用者起始命令的檢視。 會 Button 以文字來識別 ,並選擇性地識別影像,如第 13 章位 所示。 因此, Button 定義許多與 Label相同的屬性:

Button 也會定義三個屬性來控管其框線的外觀,但這些屬性及其相互獨立的支持是平臺特定的:

Button也會繼承和的所有屬性VisualElement,包括 BackgroundColorHorizontalOptionsVerticalOptionsView

處理點選

類別 ButtonClicked 定義當用戶點選 Button時引發的事件。 處理程式 Click 的類型為 EventHandler。 第一個自變數是 Button 產生事件的物件;第二個 EventArgs 自變數是未提供其他信息的物件。

ButtonLogger 範例示範簡單的Clicked處理。

共用按鈕點選

多個 Button 檢視可以共用相同的 Clicked 處理程式,但處理程式通常需要判斷哪 Button 一個負責特定事件。 其中一種方法是將各種 Button 物件儲存為欄位,並檢查哪一個對象在處理程式中引發事件。

TwoButtons 範例示範這項技術。 程式也會示範如何在按下 Button 時,將 的屬性falseButton設定IsEnabled為 不再有效。 停用 Button 不會產生 Clicked 事件。

匿名事件處理程式

您可以定義 Clicked 處理程式為匿名 Lambda 函式,如 ButtonLambdas 範例所示。 不過,若沒有一些混亂的反映程序代碼,就無法共用匿名處理程式。

使用標識符區分檢視

您也可以將 屬性或AutomationId屬性設定StyleIdstring來區分多個Button物件。 此屬性是由 Element 定義,但不會在 中使用 Xamarin.Forms。 它只供應用程式使用。

SimplestKeypad 範例會針對數字鍵台上所有 10 個數位鍵使用相同的事件處理程式,並使用 屬性來區別它們StyleId

最簡單鍵盤的三重螢幕快照

儲存暫時性數據

許多應用程式需要在程式終止時儲存數據,並在程式重新啟動時重載該數據。 類別 Application 會定義數個成員,以協助程式儲存和還原暫時性數據:

  • 屬性 Properties 是具有 string 索引鍵和 object 專案的字典。 在程序終止之前,字典的內容會自動儲存在應用程式本機記憶體中,並在程序啟動時重載。
  • 類別 Application 會定義程式標準 App 類別所覆寫的三個受保護虛擬方法: OnStartOnSleepOnResume。 這些是指 應用程式生命週期 事件。
  • 方法 SavePropertiesAsync 會儲存字典的內容。

不需要通話 SavePropertiesAsync。 字典的內容會在程序終止之前自動儲存,並在程序啟動之前擷取。 在程式測試期間,如果程式當機,儲存數據會很有用。

也很有用:

  • Application.Current,靜態屬性,會傳回您接著可用來取得字典的Properties目前Application物件。

第一個步驟是識別您想要在程序終止時保存之頁面上的所有變數。 如果您知道這些變數變更的所有位置,您只要將變數新增至該時間點的 Properties 字典即可。 在頁面的建構函式中,如果索引鍵存在,您可以從字典設定變數 Properties

較大的程式可能需要處理應用程式生命週期事件。 最重要的是 OnSleep 方法。 這個方法的呼叫表示程式已離開前景。 也許使用者已按下 裝置上的 [首頁 ] 按鈕,或顯示所有應用程式,或正在關閉手機。 呼叫 OnSleep 是程序在終止之前收到的唯一通知。 程序應該利用這個機會來確保 Properties 字典是最新的。

OnResume 呼叫表示程式未在最後一次呼叫 OnSleep 之後終止,但現在又在前景中執行。 程式可能會使用此機會來重新整理因特網連線(例如)。

在程式啟動期間呼叫 OnStart 。 不需要等到這個方法呼叫才能存取 Properties 字典,因為呼叫建構函式時 App 已經還原內容。

PersistentKeypad 範例與 SimplestKeypad 非常類似,不同之處在於程式會使用 OnSleep 覆寫來儲存目前的鍵盤專案,以及頁面建構函式來還原該數據。

注意

另一個儲存程式設定的方法是由 Xamarin.Essentials喜好設定 類別所提供。