第 6 章的摘要。 按鈕點擊
注意
這本書於2016年春季出版,此後一直沒有更新。 這本書中有很多仍然有價值,但一些材料已經過時,有些主題不再完全正確或完整。
Button
是可讓使用者起始命令的檢視。 會 Button
以文字來識別 ,並選擇性地識別影像,如第 13 章位 圖所示。 因此, Button
定義許多與 Label
相同的屬性:
Button
也會定義三個屬性來控管其框線的外觀,但這些屬性及其相互獨立的支持是平臺特定的:
- 型別
BorderColor
的Color
- 型別
BorderWidth
的Double
- 型別
BorderRadius
的Double
Button
也會繼承和的所有屬性VisualElement
,包括 BackgroundColor
、 HorizontalOptions
和 VerticalOptions
。View
處理點選
類別 Button
會 Clicked
定義當用戶點選 Button
時引發的事件。 處理程式 Click
的類型為 EventHandler
。 第一個自變數是 Button
產生事件的物件;第二個 EventArgs
自變數是未提供其他信息的物件。
ButtonLogger 範例示範簡單的Clicked
處理。
共用按鈕點選
多個 Button
檢視可以共用相同的 Clicked
處理程式,但處理程式通常需要判斷哪 Button
一個負責特定事件。 其中一種方法是將各種 Button
物件儲存為欄位,並檢查哪一個對象在處理程式中引發事件。
TwoButtons 範例示範這項技術。 程式也會示範如何在按下 Button
時,將 的屬性false
Button
設定IsEnabled
為 不再有效。 停用 Button
不會產生 Clicked
事件。
匿名事件處理程式
您可以定義 Clicked
處理程式為匿名 Lambda 函式,如 ButtonLambdas 範例所示。 不過,若沒有一些混亂的反映程序代碼,就無法共用匿名處理程式。
使用標識符區分檢視
您也可以將 屬性或AutomationId
屬性設定StyleId
為 string
來區分多個Button
物件。 此屬性是由 Element
定義,但不會在 中使用 Xamarin.Forms。 它只供應用程式使用。
SimplestKeypad 範例會針對數字鍵台上所有 10 個數位鍵使用相同的事件處理程式,並使用 屬性來區別它們StyleId
:
儲存暫時性數據
許多應用程式需要在程式終止時儲存數據,並在程式重新啟動時重載該數據。 類別 Application
會定義數個成員,以協助程式儲存和還原暫時性數據:
- 屬性
Properties
是具有string
索引鍵和object
專案的字典。 在程序終止之前,字典的內容會自動儲存在應用程式本機記憶體中,並在程序啟動時重載。 - 類別
Application
會定義程式標準App
類別所覆寫的三個受保護虛擬方法:OnStart
、OnSleep
和OnResume
。 這些是指 應用程式生命週期 事件。 - 方法
SavePropertiesAsync
會儲存字典的內容。
不需要通話 SavePropertiesAsync
。 字典的內容會在程序終止之前自動儲存,並在程序啟動之前擷取。 在程式測試期間,如果程式當機,儲存數據會很有用。
也很有用:
Application.Current
,靜態屬性,會傳回您接著可用來取得字典的Properties
目前Application
物件。
第一個步驟是識別您想要在程序終止時保存之頁面上的所有變數。 如果您知道這些變數變更的所有位置,您只要將變數新增至該時間點的 Properties
字典即可。 在頁面的建構函式中,如果索引鍵存在,您可以從字典設定變數 Properties
。
較大的程式可能需要處理應用程式生命週期事件。 最重要的是 OnSleep
方法。 這個方法的呼叫表示程式已離開前景。 也許使用者已按下 裝置上的 [首頁 ] 按鈕,或顯示所有應用程式,或正在關閉手機。 呼叫 OnSleep
是程序在終止之前收到的唯一通知。 程序應該利用這個機會來確保 Properties
字典是最新的。
的 OnResume
呼叫表示程式未在最後一次呼叫 OnSleep
之後終止,但現在又在前景中執行。 程式可能會使用此機會來重新整理因特網連線(例如)。
在程式啟動期間呼叫 OnStart
。 不需要等到這個方法呼叫才能存取 Properties
字典,因為呼叫建構函式時 App
已經還原內容。
PersistentKeypad 範例與 SimplestKeypad 非常類似,不同之處在於程式會使用 OnSleep
覆寫來儲存目前的鍵盤專案,以及頁面建構函式來還原該數據。
注意
另一個儲存程式設定的方法是由 Xamarin.Essentials喜好設定 類別所提供。