原创 第二十四章:頁面導航(十五)

保存和恢復頁面狀態特別是當您開始使用多頁面應用程序時,將應用程序的頁面視爲數據的主要存儲庫非常有用,而僅僅是作爲底層數據的臨時可視化和交互式視圖。這裏的關鍵詞是暫時的。如果您在用戶與之交互時保持基礎數據是最新的,那麼頁面可以顯示和消失而不必

原创 第二十四章:頁面導航(十四)

切換到ViewModel此時應該很明顯,Information類應該真正實現INotifyPropertyChanged。 在DataTransfer5中,Information類已成爲InformationViewModel類。 它派生自

原创 第二十四章:頁面導航(十三)

App類中介在Xamarin.Forms應用程序中,在公共代碼項目中執行的第一個代碼是通常名爲App的類的構造函數,該類派生自Application。 在程序終止之前,此App對象保持不變,並且程序中的任何代碼都可以通過靜態Applicat

原创 第二十四章:頁面導航(十二)

事件在方法調用方法和消息中心通信方法中,信息頁面需要知道主頁的類型。 如果可以從不同類型的頁面調用相同的信息頁面,這有時是不合需要的。這個問題的一個解決方案是info類實現一個事件,這就是DataTransfer3中採用的方法。 Infor

原创 第二十四章:頁面導航(十一)

消息中心您可能不喜歡兩個頁面類直接相互調用方法的想法。 它似乎適用於小樣本,但對於具有大量類間通信的大型程序,您可能更喜歡一些不需要實際頁面實例的更靈活的東西。這樣的工具是Xamarin.Forms MessagingCenter類。 這是

原创 第二十四章:頁面導航(七)

操縱導航堆棧有時需要改變正常的面向堆棧的導航流程。例如,假設頁面需要來自用戶的一些信息,但首先它導航到提供一些指令或免責聲明的頁面,然後從那裏導航到實際獲取信息的頁面。當用戶完成並返回時,您將希望跳過包含說明或免責聲明的頁面。該頁面應從導航

原创 第二十四章:頁面導航(五)

導航變化 當您嘗試使用ModalEnforcement和MvvmEnforcement程序時,您可能會對模態頁面未能保留任何信息感到不安。我們都遇到了導航到用於輸入信息的頁面的程序和網站,但是當您離開該頁面然後再返回時,您輸入的所有信息都消

原创 第二十三章:觸發器和行爲(十)

響應水龍頭切換視圖的各種表現形式演示了一種響應XAML文件中的點擊的方法。 如果將tap事件集成到VisualElement類中,您可以使用EventTrigger更直接且更輕鬆地獲取它們。 但是您無法將EventTrigger附加到Tap

原创 第二十三章:觸發器和行爲(三)

觸發動作和動畫雖然某些觸發器可以完全在XAML中實現,但其他觸發器需要一些代碼支持。 如您所知,Xamarin.Forms沒有直接支持在XAML中實現動畫,因此如果您想使用觸發器爲元素設置動畫,則需要一些代碼。有幾種方法可以從XAML調用動

原创 第二十三章:觸發器和行爲(一)

將標記語言(如XAML)引入圖形編程環境最初可能只是構建用戶界面元素集合的另一種方法。但我們已經看到標記語言往往會產生更深刻的後果。標記語言促使我們在交互式視覺和底層業務邏輯之間更加果斷地劃分程序。這進一步表明,我們可能會受益於在諸如MVV

原创 第二十二章:動畫(十九)

更多你自己的等待方法之前,您已經瞭解瞭如何將TaskCompletionSource與Device.StartTimer一起使用來編寫自己的異步動畫方法。 您還可以將TaskCompletionSource與Animation類結合使用,編

原创 第二十二章:動畫(十八)

超越高級動畫方法你到目前爲止看到的ConcurrentAnimations中的例子僅限於Scale和Rotate屬性的動畫,因此它們沒有顯示任何你無法做的事情。ViewExtensions類中的方法。 但是因爲您可以訪問實際的回調方法,所以

原创 第二十二章:動畫(十七)

子動畫ConcurrentAnimations中的前兩個示例是單個動畫。 Animation類還支持子動畫,這就是標記爲“Animation 3”的Button的處理程序。 它首先使用無參數構造函數創建父動畫對象。 然後它創建兩個額外的An

原创 第二十二章:動畫(十五)

深入動畫 在第一次遇到時,完整的Xamarin.Forms動畫系統可能會有點混亂。 讓我們從可用於定義動畫的三個公共類的全局視圖開始。整理課程除了Easing類之外,Xamarin.Forms動畫系統還包含三個公共類。 在這裏,它們按層次順

原创 第二十二章:動畫(十四)

你自己的等待動畫在本章的下一節中,您將看到Xamarin.Forms實現的基礎動畫基礎結構。這些底層方法允許您定義自己的動畫函數,這些函數返回Task對象,並且可以與await一起使用。在第20章“異步和文件I / O”中,您瞭解瞭如何使用