這份清單文件中所有列出的範例專案原始碼,是我最近一年從事 Xamarin.Forms 專案開發與上課教學,所撰寫的相關範例,當您有在開發 Xamarin.Forms 專案的時候,若有遇到任何問題,非常適合參考這些專案範例原始碼。
我都已經在底下環境實際建置與執行和測試過,確認這些專案可以正常運作。
● 作業系統:
Windows 10 專業版 1607
● Visual Studio:
Enterprise 2015 Update 3
● Xamarin ToolKit:
Xamarin 4.2.2.11
Xamarin.Android 7.0.2.42
Xamarin.iOS 10.3.1.8
▂▃▄▆█ Xamarin基本觀念 █▆▄▃▂
▂▃▄▆█ Prism 與 MVVM 應用 █▆▄▃▂
▂▃▄▆█ 基本頁面使用 █▆▄▃▂
▂▃▄▆█ Layout基礎概念 █▆▄▃▂
▂▃▄▆█ XAML 基礎概念 █▆▄▃▂
▂▃▄▆█ XAML 進階技巧 █▆▄▃▂
▂▃▄▆█ 擴充控制項 █▆▄▃▂
▂▃▄▆█ Xamarin.Forms核心技術 █▆▄▃▂
▂▃▄▆█ 應用實例與套件 █▆▄▃▂
▂▃▄▆█ Xamarin基本觀念 █▆▄▃▂
XFFirst
使用 Xamarin.Forms 的專案樣板,建立您第一個 Xamarin.Forms 專案
在這個練習中,只會使用 Xamarin.Forms 的預設專案樣板,建立您第一個 Xamarin.Forms 的專案,並不會在 Xaml / Code Behind / ViewModel 中做任何設計。這個練習的目的,是在於學會如何建立一個 Xamarin.Forms 專案,並且可以成功在不同平台的模擬器下來執行。
SAPLib
使用 Shared 專案,開發原生 Android / iOS / UWP 專案
在這裡使用條件式的編譯符號,定義各平台下要執行的程式碼,您可以透過左上角的下來選單,進行切換
iOSLab
Xamarin.iOS 原生專案開發練習
這個專案,將會使用原生 iOS 開發套件與原生 iOS API開發出一個原生 iOS App
AndroidHello
使用 Xamarin.Android 來建立一個原生 Android 類型的應用程式
這個範例專案將會說明如何使用 Xamarin.Android 工具幫助您開發原生 Android 類型的應用程式
HelloBlankXamlApp
Xamarin.Forms Hello World
如何使用 Visual Studio 提供的專案樣板,產生一個 Xamarin.Forms 的專案。
iOSHello
使用 Xamarin.iOS 來建立一個原生 iOS 類型的應用程式
AndroidLab
如何使用 Xamarin.Android 開發專案
這個專案讓您練習如何使用 Xamarin.Android工具,透過 原生 Android API,建立一個原生 Android 應用程式
▂▃▄▆█ Prism 與 MVVM 應用 █▆▄▃▂
PrismDS
如何實作出相依性服務注入的介面與物件與練習建構式注入方法
在這裡,使用建構式注入了 ISayHello 介面地當時實作物件,ISayHello 的實作物件將會於每個原生專案內茶看到,在原生專案內,其類別必須標示 [assembly: Xamarin.Forms.Dependency(typeof(SayHello))]
PrismUnityApp4
Prism 核心服務與功能練習
在這裡,您將會學會如何在進行頁面導航的時候,傳遞參數到下個頁面中、如何在新頁面中將參數取得回來、使用深層導航,一次導航到多個頁面;對話窗服務功能的使用、使用相依性服務注入技巧、建構式注入物件。
MasterDetailPagePrism
使用 Prism 開發框架,建立具有導航抽屜功能的頁面
這個練習專案,將會使用 Prism 開發框架來設計,所以,在MasterDetailPage,僅需要定義導航抽屜面板,而 Detail 屬性部分,則會由 Prism 的導航 URI 來提供
DeepLink
如何透過 Prism 提供的 INavigationService 操作頁面導航功能
在這個練習專案,我們將來練習如何透過 Prism 提供的 INavigationService 介面物件,進行各種頁面導航的操作。其中,包含了相對頁面導航的方法、深度導航、與自訂深度導航。
MVVM1
開發 Xamarin.Forms 專案,不使用 MVVM 開發方式的作法
MVVM 是您要開發 Xamarin.Forms 專案時候必備的開發技能,若您不使用 MVVM 開發方式與選擇一個合適您的 MVVM 開發框架工具;那麼,當您進行專案開發的時候,將會遇到很多不方便處理的問題。
在這裡將會體驗如何使用 Code Behind 的方式來開發 Xamarin.Forms 的專案
MVVM2
不透過任何 MVVM 開發套件,自行製作 MVVM 開發方法的規範需求
若您不依賴任何 MVVM 開發框架工具,則您需要在每個 ViewModel 內來實作出 INotifyPropertyChanged (INPC) 介面,如此,當 View 中的控制項所綁定的屬性或者 ViewModel 內的屬性有異動的時候,才會根據綁定模式,自動地進行異動後的資料更新。
在這個專案中,您將需要定義一個 ViewModel 類別,並且設定頁面中的 BindingContext 屬性上。
MVVM3
使用 Prism 開發框架工具,進行 Xamarin.Forms + MVVM 專案開發
在這個練習專案中,我們將會直接使用 Prism 這個 MVVM Framework;Prism 提供了相當多友善的 MVVM 開發解決方案,讓您在進行 Xamarin.Forms 專案開發的時候,可以,更加快速與簡潔的做出好用的應用程式。
XFAlert
Xamarin.Forms 與 Prism 在警告視窗與動作表單視窗的用法
這裡綜合了 Xamarin.Forms 與 Prism 在警告視窗與動作表單視窗的用法
XFPmLM
Prism 的容器各種使用方式
這個專案將會展示如何使用 Prism 的容器各種使用方式,包含了如何註冊、解析一個要注入的物件與藥注入物件生命週期管理
XFPrismALM
學習 Prism 與 Xamarin.Forms 的頁面事件的執行先後順序之差異
這個專案將會用來測試 Code Behind 的 OnAppearing / OnDisappearing 和 Prism 的 INavigationAware 之 OnNavigatedFro / OnNavigatedTo 事件, 這些事件,在不同情況下、在不同平台下的執行順序,您將會看到不同平台下執行順序差異
▂▃▄▆█ 基本頁面使用 █▆▄▃▂
TabPage1
使用 TabbedPage.ItemTemplate 來開發出多標籤頁次的頁面
TabbedPage 支援可以使用 TabbedPage.ItemTemplate 來設計一個樣板頁面,而可以使用 ItemsSource 來指定要顯示的資料的來源;透過這樣的設計,每個標籤頁次所要顯示的控制項都一樣,只不過,每個標籤頁次內所顯示內容都會不一樣。
TabPage2
標籤頁式頁面開發範例
XamarinLogin
製作一個使用者登入的頁面
這裡,使用 Font Awesome 與相關 XAML 控制項,製作出一個讓使用者登入的頁面
HomeDrawer
企業內部應用程式範例框架
這個專案將展示了一個企業內部應用程式的大概雛形,它有個導航抽屜,裡面有加班申請、請假系統、工作報告這樣的頁面導航設計範例。您可以透過這個範例框架,進行修改,就可以開始進行您的企業內部跨平台應用程式開發了。
HomeTabbed
將公司內部網頁,串接到跨平台應用程式範例
在這裡,將會透過標籤式頁面,將許多網頁串接到這個應用程式中,並且可以加入許多 Xamarin.Forms 的原生頁面與控制項。
HomeMenu
導航抽屜
在這個首頁應用程式中,採用的是Xamarin.Forms 提供的 Master-Detail 頁面,該頁面擁有一個漢堡按鈕,當您點擊該按鈕或者由螢幕左方往右滑動,就會帶出一個導航抽屜選單;在這個選單上,您可以依照您的需求點擊任何項目,此時,螢幕就會出現該項目應該呈現的頁面。
HomeMenuXAML
使用導航抽屜頁面,展示所有 XAML 控制項
在這個範例專案中,可以透過導航抽屜面板,切換到不同頁面,便可看到 Xamarin.Forms 預設控制項與版面配置的使用範例和實際在不同平台上執行成果。
XFSplash
系統啟動的啟動畫面的設計方法
一個應用程式啟動後,可能需要做不同的資料初始化,例如:要從網路下載資料、要從手機內讀取檔案資料等等,這些都會造成啟動程式需要一些時間,才能夠切換到首頁頁面;因此,可以透過這個專案提供的啟動頁面設計,讓使用者不會對這個應用程式造成不好的感覺。
XFSplashDbg
Xamarin.Forms 應用程式除錯練習
這個專案內存在了許多錯誤,請您嘗試修改這個專案,讓這個專案變成可以正常執行的模式。
XFSplashDbg_Ans
Xamarin.Forms 應用程式除錯練習解答
這是除錯練習的解答
DataForms
表單輸入頁面設計範例
在這個練習專案中,您將要設計一個表單,讓使用者填寫,並且這個表單有很多項目,會超過螢幕高度,因此,您需要使用 ScrollView 讓使用者可以捲動填寫所有資料。
XFNaviService
這是個綜合演練範例,包含了導航頁面、深度導航、導航抽屜的各種測試
從這裡,您可以了解到一個綜合式的應用開發,該如何解決這些問題。
TabbedPageLab
標籤式頁面 TabbedPage 的使用練習
在這個練習中,您需要在標籤式頁面內,加入多個 ContentPage 項目,並且每個項目一定要定義 Title 屬性,這樣,就完成了標籤式頁面的設計
TabbedPagePrism
在 Prism 下,設計標籤式頁面 TabbedPage 的使用練習
在這個練習中,您需要在標籤式頁面內,加入多個 ContentPage 項目,並且每個項目一定要定義 Title 屬性,這樣,就完成了標籤式頁面的設計
TBIVideoLabImg
標籤式頁面 TabbedPage 具有圖片的使用練習
在這個練習中,您需要在標籤式頁面內,加入多個 ContentPage 項目,並且每個項目一定要定義Title 屬性、設定 Icon 屬性,這樣,就完成了標籤式頁面的設計。您需要將圖片檔案複製到原生專案的指定位置內,若每個原生專案的圖片路徑不太相同,可以使用 OnPlatform x:TypeArguments 來指定個平台的圖片位置
TBIVideoLab
導航工具列設計範例
這個專案,將會練習如何在導航工具列上,加入導航工具列按鈕,讓這個頁面多了一寫操作命令選擇
MDVideoLab
導航抽屜頁面與絕對導航與相對導航
這個範例中,將會展示如何在導航抽屜面板中,切換到其他的工作頁面,不過,在此,使用的是絕對導航方式,在這個方式中,將會清除導航堆疊。您也可以使用相對導航方是,看看這兩種導航操作,有何不同
同樣的導航指令,為何從導航抽屜進行導航的沒有導航工具列,而從子頁面導航的頁面,卻有導航工具列,您知道為什麼?
NavigationPageLab
練習 Xamarin.Forms 的頁面導航切換
這個練習專案內有兩個按鈕,第一個按鈕於切換頁面之後,就無法再回到原先頁面;而第二個按鈕,將可以切換到第二個頁面,也可以使用工具列或者硬體回上一頁按鈕,回到上一頁
NavigationPagePrism
如何客製化導航工具列
在這個練習專案中,您將會學習如何客製化導航工具列;我們將在 NewPage 頁面中,使用附加屬性表示方式, NavigationPage.HasBackButton="False" 設定這個頁面的導航工具列沒有回上頁按鈕圖片
MasterDetailPageLab
使用 Xamarin.Forms 的基本方法,建立一個具有導航抽屜功能的應用程式
在這裡,您需要指定 MasterDetailPage.Master / MasterDetailPage.Detail 這兩個屬性,進行設定導航抽屜與子頁面的內容
MasterDetailPage1Lab
使用 Xamarin.Forms 建立一個導航抽屜頁面應用程式,不過,沒有使用 NavigationPage
您可以嘗試與
使用 Xamarin.Forms 的基本方法,建立一個具有導航抽屜功能的應用程式
這個專案來做比較ContentPageLab
練習 Xamarin.Forms 原生提供的頁面導航功能(會發生錯誤的版本)
這個專案將會練習 Xamarin.Forms 原生提供的頁面導航功能,但是不透過導航頁面來操作所遇到的問題;在開發上,您可能需要使用 Code Behind 來撰寫頁面商業邏輯。
ContentPagePrism
練習在 Prism 中,使用導航頁面的操作(無 NavigationPage)
練習在 Prism 中,使用導航頁面的操作;這個應用程式的第一個頁面使用 NavigationService.NavigateAsync("MainPage?title=Hello%20from%20Xamarin.Forms"); 方式進入,可以操作與測試看,與一般應用程式有何不同,為何不會閃退(與傳統 Xamarin.Forms Code Behind 的做法。另外,這個控制項可以控制頁面上的按鈕,是否可以正常使用,這是透過了 ICommand 內所提供的功能。
DrawerPresent
練習導航抽屜頁面的開發設計方式
在這個專案中,將會練習導航抽屜頁面的開發設計方式。這包括了,如何資料繫結導航工具列頁面名稱、手動推出導航抽屜、導航頁面的設計方式、取得導航抽屜與子頁面的設計尺寸、Prism 事件聚合器用法。
DynaDrawer
這個練習將會學習如何設計與使用 MasterDetailPage
在這個導航抽屜面板中,將會提供動態可收合的功能表,因此,透過這個練習,您將可以設計導航面板,使其具有更多樣性的效果;MasterDetailPage的導航面板,將是由 Master 這個屬性來呈現,這是一個使用 ContentPage 來製作出來的面板
▂▃▄▆█ 基本控制項使用 █▆▄▃▂
SimpleListView1
練習如何使用 ListView 控制項
建立每個紀錄要用到的類別、使用 ObservableCollection建立要綁定到XAML的集合物件、綁定 SelectedItem 屬性、使用 Behavior 綁定ItemTapped事件與ICommand、設計每筆紀錄要出現的樣貌 ListView.ItemTemplate
EntryLab
這個練習專案,將會學習 Entry 這個控制項的各種不同用法
這包括了使用提示浮水印、指定使用軟體鍵盤格式、預設輸入文字、設定提示浮水印文字顏色、字體大小與格式
sampleListView
練習如何使用 ListView 控制項
學習 Xamarin.Forms 的 ListView 使用方法:產生一個 ViewModel類別,將 ViewModel 綁訂到 ListView 上、定義每筆紀錄要顯示的視覺內容
XFGestures
手勢操作
在行動裝置中,手勢操作功能相當的重要,例如,使用手指點擊螢幕、兩指縮放、拖拉等等;使用Xamarin.Forms GestureRecognizer 類別,可以任您應用程式中的使用者介面控制項,具有處理點擊、雙指縮放、平移這些手勢操控的偵測與處理能力。
XFMap
地圖功能
說明如何開發地圖相關應用的 Xamarin.Forms 應用程式;另外,也會提到完全不使用 XAML 宣告定義的方式,而是採用 C# 程式語言直接進行 Xamarin.Forms 的程式開發方法。當您看完這一章節之後,可以判斷出,使用 XAML 與 純C# 這兩種開發方式,哪種比較方便與好用。
XFImage
Xamarin.Forms 的 Image 相關使用方式與注意事項
這個範例專案,讓您學習到 Xamarin.Forms 的 Image 相關使用方式與注意事項
XFListView
ListView 的各種不同用法展示
這個範例展示出各種在 ListView 遇到的情境與問題解法
XFPicker
如何使用 Xamarin.Forms 內建的 Picker 控制項
這裡將展示如何使用 Xamarin.Forms 內建的 Picker 控制項,您可以在 Xamarin中,定義靜態的可選擇項目,請使用 x:String 來指定每個紀錄內容
▂▃▄▆█ Layout基礎概念 █▆▄▃▂
LayoutOp
LayoutOptions 在 StackLayout 的各種設定效果
在這個範例中,將會在 StackLayout 版面配置中,放置許多 Label 控制項,並且每個Label控制項都擁有不同 LayoutOptions 列舉值,請執行看看結果,並嘗試了解是否與您理解的一致。
RelativeLayoutLab
使用 Xamarin.Forms 的相對版面配置 RelativeLayout
在這裡,您將會看到如何使用 Xamarin.Forms 提供的版面配置 (Layout )的其中一種,相對版面配置 RelativeLayout 的使用方法。
AbsoluteLayoutLab
XAML 版面配置 AbsoluteLayout 練習
AbsoluteLayout 讓您可以使用絕對座標的方式,配製容器內的控制項所要顯示的位置;這個專案,將會提供您練習使用 XAML AbsoluteLayout 這個版面配置的用法
XFLayoutOptions
練習各種不同 LayoutOptions 所表現出來的特性
這個專案,將練習 LayoutOptions 的六個列舉值的特性
▂▃▄▆█ XAML 基礎概念 █▆▄▃▂
DynaStat
資源字典的靜態與動態資源項目的使用範例
在這個範例中,將會展示如何在 Xamarin.Forms 中使用靜態與動態資源,並且如何在執行時期來變更動態資源的用法,也會展示出資源項目的繼承關係與變化。另外,也會練習使用 .NET 的靜態屬性作為 XAML 屬性的設定值。
XFxArray
在 ListView 中,直接使用靜態的集合資料,無須透過 ViewModel來指定
如何使用 x:Array 來指定一個靜態資料的 ListView 集合資料來源
DataBinding
XAML 資料綁定 Data Binding 的方法與技巧
在這個練習專案中,將會學習各種資料綁定 Data Binding 的方法與技巧,以及如何建立一個 ViewModel 與建立各個所需要的屬性 Property 或集合屬性(Collection Property),以便在 View 中可以使用資料繫結方式進行綁定。另外,也學習如何使用 Prism 的INavigationAware來進行 ViewModel 資料初始化等相關工作。
使用建構式與OnNavigatedTo來建立這個 ViewModel 的資料初始化工作,有何不同,請試著比較說明看看
ElementTree
資源樣式的定義與使用說明
說明如何使用資源樣式的用法,並且了解到階層式的資源樣式用法與覆蓋方式
MergedDict
資料字典合併的用法
我們可以將資料字典定義在另外一個 .xaml 檔案中,並且在您要顯示的頁面中,將這個資料字典定義的內容,合併進來使用,是個相當實用的功能,因為,您可以將常用的資料字典資源整理在一個地方,方便管理。 您將會學習到如何定義資源項目、明確樣式、隱含樣式、控制項自己宣告資源字典、合併資源字典、宣告樣式但繼承某個已宣告的樣式、樣式的繼承(合併不會跨檔案繼承)。
▂▃▄▆█ XAML 進階技巧 █▆▄▃▂
CustomDiag
兩種自動控制項開發練習
在這個專案中,您將會設計兩種使用者控制項,這兩種控制項在一般應用程式開發中,會經常用到,第一個為需要使用者輸入帳號與密碼的彈出對話窗、第二個則是正在處理中的對話窗,這兩個對話窗都具有遮罩的效果
UserCtrlEntry
這裡將展示如何自行客製一個使用者控制項(具有資料綁定與處理邏輯)
當使用者所輸入文字長度超過使用者控制項的定義,其右方的圖片,將會變成綠色,告知使用者,您輸入的文字內容符合規定;在這裡,您可以針對不同條件做出不同的條件檢查,也可以使用正規表示式來判斷使用者輸入的內容是否符合規範
宣告一個使用者控制項,並且綁定 ViewModel 內的 Name Property,設定這個文字輸入盒,具有輸入字串長度檢查能力
AttProp
如何在 Xamarin.Forms 開發 XAML 用的 Attached Property
這個附加屬性,只能夠套用在 Entry 控制項上,會根據所指定的名稱,自動加上浮水印文字
BindProp
客製控制項並且加入一個可綁定屬性,以便擴充新控制項的能力
繼承原有控制項,並在新的控制項中,加入一個新的可綁定屬性,使得新的控制項可以具有另外一種表現能力
XFAnimation
學習如何在 Xamarin.Forms 中,使用動畫效果功能
在這裡,您將學習如何使用每個控制項都會具有的動畫處理方法,由於,這些動畫處理方法都是依附在每個控制項中,因此,我們需要在 Code Behind 來撰寫相關動畫處理邏輯,若您想要把這些 Code Behind 程式碼移除,直接在 ViewModel 中呼叫,您可以客製化一個 Behavior。
XFAttBehavior
說明了如何製作出一個 Attached Behaviors
Xamarin.Forms 內的 Behaviors ,讓您可以將一些功能加入到 Xamarin.Forms所提供的控制項中,但是卻不需要繼承原有控制項類別,做出一個客製化控制項;透過了 Attached Behavior ,就可以任您的控制項,擁有不同的行為表現;另外, Behaviors 可以讓您原先在 Code Behind 內的處理邏輯,隱藏起來,透過 XAML 語法,進而啟用這些功能
XFImgZoom
Xamarin.Forms Behavior 的製作與練習
這個範例將會展示如何將放大等手勢操作功能,把原先需要在 Code Behind 寫的程式碼,包裝到 Xamarin.Forms Behaviors,並且在 XAML中來直接套用
XFIValueConverter
練習建立一個數值轉換器
在這個練習中,建立一個數值轉換器,接收一個字串文字,根據對應關係,會轉換成為一個顏色物件,若對應不起來,則回傳黑色,若不透過數值轉換器,您可以在 ViewModel 內定義一個 Color 屬性,在 ViewModel 內自行處理這些轉換邏輯
XFTransforms
學會如何使用繼承 VisualElement 之任何控制項都會擁有的 變換 Transforms 功能
這個專案將會讓您操作 VisualElement 上的一些轉換行為,例如:平移、縮放、旋轉
XFTrigger
練習 Xamarin.Forms 提供的四種觸發功能 屬性觸發 / 資料觸發 / 事件觸發 / 多重觸發
Trigger 可以讓您在 XAML 中,定義各種不同條件,當條件滿足之後,將會做出各種反應
XFUserControl
如何在 Xamarin.Forms 製作與使用一個使用者控制項 (User Control)
這是一個使用者控制項的練習範例,在這裡,您定義另外一個 XAML 檔案,在這裡宣告一些控制項與版面配置,使其成為一個組合式的控制項,在這裡,不需要繼承任何類別,就可以組合成一個您經常使用的控制項
▂▃▄▆█ 擴充控制項 █▆▄▃▂
XFWrapLayout
自己客製一個 WrapView 控制項,並在 Xamarin.Forms 來使用
WrapView 是 Xamarin.Forms 所欠缺的,在這裡將會練習如何使用 WrapView 這個自訂控制項
ImageCircleLab
顯示一有圓形遮罩修飾過的個圖片
要讓圖片被圓形遮罩給修飾,您需要定義額外命名空間,指向 ImageCircle 這套件的組件,就可以將有圓形遮罩的圖片,顯示在螢幕上
PickerLab
在 Xamarin.Forms 中使用具有可綁定功能的 Picker 控制項
在 Xamarin.Forms 中的 Picker 控制項,是沒有提供可綁定資料與命令功能,這對於採用 MVVM 開發方式的開發者而言,是相當的不方便(不過,在2017第二季之後,Xamarin.Forms 將會提供這項功能)。
不過,在此之前,若想要使用這樣的功能,您可以使用本範例中提供的 BindablePicker 來做這樣功能,您也可以順便學習與了解,在 Xamarin.Forms 中,要如何自己客製化一個控制項,做出屬於您自己的 XAML 控制項。
XFCarouselView
練習使用旋轉木馬控制項
這個練習中,將會學習如何在 Xamarin.Forms 中使用旋轉木馬控制項。
XFEllipse
在 Xamarin.Forms 應用程式,可以產生橢圓或圓形的圖形
我們將會來練習一個 Xamarin.Forms 內沒有的一個控制項,那就是要顯示圓形或者橢圓的形狀;在這裡將會繼承 View 控制項,產生出一個 EllipseView 新控制項,並且使用 Renderer 核心功能,在 Android / iOS / UWP 內,使用原生 API 來產生出這個圓形或橢圓形的形狀。
XFFlip
使用 CarouselViewControl 來做出有旋轉木馬效果的控制項
這裡有另外一個控制項 CarouselViewControl,非 Xamarin 官方提供的外加控制項,一樣可以做到有旋轉木馬的功能。
XFFontAwesome
如何在 Xamarin.Forms 使用與顯示 Font Awesome
這是一個綜合應用練習在這個練習中,您將會學習到
- 如何將 Font Awesome 字體檔案加入到個原生專案內,並且做出相關設定,讓原生系統可以使用這個字體檔案。
- 建置一個自訂控制項,用來可以顯示 Font Awesome 的字體圖示
- 學習使用 Renderer 技術,改變預設控制項在不同平台顯示的樣貌與內容
- 在 XAML 中指定要顯示 Font Awesome 文字方式
- 練習一個應用程式啟動畫面,進行系統資料讀取與更新的長時間工作,當工作結束後,可以切換到主換面上
- 了解非同步工作的開發與設計方式和注意事項
XFHListView
Xamarin.Forms 動態產生檢視項目的 WrapView
使用 FlowListView,顯示出 GridView 這樣效果的控制項,這個控制項相當的實用;這裡將會顯示文字內容
XFHorListView
水平捲動的 ListView
在這裡,您需要加入一個命名空間,參考到我們定義的水平式 ListView 客製控制項
XFMoreWrapLayout
客製一個 WrapView 控制項,並做到動態收合效果
這裡使用了 WrapView 與 RoundedBoxView 產生出具有折合效果的捲動清單
XFRendCtrl
客製專屬平台的控制項視覺
會透過 Xamarin.Forms 提供的相依服務的 ExportRenderer 方法,會將自訂控制項使用每個專屬平台的額外程式碼進行修正,使這些平台上看到的控制項,儘可能一樣。在這裡,也會練習如何使用導航工具列的按鈕製作方式
XFRoundedBoxView
展示如何使用可以繪製圓角的控制項與其用法
我們將需要自訂一個控制項,並且在每個平台使用 Renderer 來產生這個具有圓角的矩形
XFSkiaSharp
如何在 Xamarin.Forms 使用類似 Canvas 畫布功能
SKCanvasView 控制項是一個具有畫布功能的控制項,可以讓您在這個控制項上進行各種繪圖動作
▂▃▄▆█ Xamarin.Forms核心技術 █▆▄▃▂
XFDependency
相依性服務注入
Xamarin.Forms 允許開發者可以自行定義出每個平台專屬一些行為,而在核心PCL專案內,透過 DependencyService 這個靜態類別所提供的 Get 方法,於執行時期找到當時執行行動裝置平台對應的建置程式碼,接著執行這些功能,使得當要存取原生方法的時候,可以使用分享程式碼的方式。
XFMessage
訊息中心
Xamarin.Forms 提供一個訊息通訊機制,稱作 訊息中心 ( MessagingCenter ),透過訊息中心這個機制,可以減少 Xamarin.Forms 程式開發的耦合性,也就是說,讓各個類別間不要有關聯關係。在訊息中心機制內,包含了簡單的訊息傳送與接收服務。
XFDevice
平台特色
在進行 Xamarin.Forms 跨平台應用程式開發的時候,由於,開發者會將大部分的商業邏輯與視覺介面都在核心PCL內進行開發,不過,有些時候在共用的商業邏輯程式碼內或者在共用視覺介面 XAML 定義宣告中,想是根據不同的平台與系統做出不同的反映;這樣的需求,就是這個章節存在的目的。
XFAlert
學習如何使用 Xamarin.Forms 提供的對話窗功能
您可以在 Code Behind 程式碼中,直接使用 DisplayAlert / DisplayActionSheet 對話窗,這些對話窗將會在每個平台,以原生對話窗的樣貌出現(因為,就是呼叫原生平台的對話窗 API)。
另外,我們也將學習如何在 ViewModel 中使用 Prism 提供的 IPageDialogService 介面的 DisplayAlertAsync / DisplayActionSheetAsync 對話窗功能;在這裡,您需要在 ViewModel 的建構式中,注入 IPageDialogService 實作物件。
XFWebSrv
Web 服務存取
在這個範例專案中,將會實作 RESTful Web API 與 WCF 這兩種 Web 服務的呼叫方式。
XFALM
Xamarin.Forms 內提供的頁面應用程式生命週期練習
在這裡,我們將會學習兩個事件 OnAppearing / OnDisappearing 的使用方式,以及,這兩個事件將會於甚麼時候被執行。透過了 Visual Studio 輸出視窗,您可以看到這些事件被呼叫的過程與順序。
XFLifeCycle
練習 Xamarin.Forms 的應用程式生命週期
這個專案練習將會練習 Xamarin.Forms 的應用程式生命週期,您需要執行這個專案,觀察 Visual Studio 內的輸出視窗,觀察輸出內容,請試著將應用程式切換為背景模式,並且再度切換成為前景
XFOnPlatform
如何在 XAML 與 C# 內,使用 OnPlatform
在這個範例,練習如何使用 OnPlatform 來設定不同平台的XAML控制項有著不同屬性
▂▃▄▆█ 應用實例與套件 █▆▄▃▂
XFSQLite
SQLite資料庫使用
在這個範例專案中,將會說明如何在核心PCL專案內,使用 SQLite 資料庫來操作資料表的 CRUD功能。您需要在原生專案與核心PCL專案中安裝這個 SQLite.Net PCL NuGet 套件,並且要在原生專案中提供 SQLiteConnection 的實作。
XFDevInfo
與裝置硬體互動
在進行 Xamarin.Forms 跨平台應用程式開發的時候,您需要取得特定平台硬體內的許多資訊,例如:您需要取得裝置硬體的唯一識別碼、GPS定位最新資訊、電池狀態、網路連線狀況等等。
得知裝置的電池電力、充電狀態等等 (使用 Battery Plugin )
檢查網路連線狀態、連線類型、可用頻寬等資訊 (使用 Connectivity Plugin )
取出裝置的相關資訊,如型號、作業系統等等 (使用 Device Info Plugin )
取得 GPS 當時定位資訊,必且開啟手機內建的地圖應用程式來顯示 (使用 Geolocator / External Maps Plugin )
讓裝置硬體震動 (使用 Vibrate Plugin )
XFFilePhoto
檔案存取與拍照
在這個範例專案中,將會練習兩個在行動裝置開發過程中,相當重要的功能,那就是 檔案存取 與 行動裝置的專屬功能呼叫,在這裡將會展示如何在核心PCL專案內,呼叫個專屬平台的拍照功能,並且將拍照完成的照片回傳並顯示到行動裝置螢幕上。
XFAuth
Facebook 社群身分驗證
說明如何透過 Xamarin 提供的元件 Xamarin.Auth ,進行社群身分驗證,在這裡,將會使用 Facebook 作為身分驗證的來源。
XFAzureMA
Azure Mobile後端資料庫存取
當進行跨平台裝置專案開發過程中,大多會需要使用到後端資料庫存取服務,在這個範例中,將會為您說明使用 Microsoft Azure 所提供的 Azure Mobile App 服務。
XFCALQR
萬年曆與QR-Code
在這個範例專案中,將會實作出 萬年曆與QR-Code 的功能,這兩項功能也是透過插件來完成,不過,來看看要怎麼時做出這樣的功能。
XFGenBarcode
我們可以透過 NuGet 套件,讓應用程式顯示出各種不同條碼的圖片
在這裡,我們學習如何在 XAML 中,使用 ZXingBarcodeImageView 控制項,顯示出一維 / 二維 條碼的圖片在螢幕上;要指定各種不同條碼格式,可以使用 BarcodeFormat 屬性。
XFScan
這個專案展示如何進行一維或者二維條碼掃描
不使用 ViewModel ,使用 Code Behind 來展示
MapsLab
練習如何在 Xamarin.Forms 顯示地圖
要練習這個專案,您的模擬器必須要安裝 Google Play Service,否則,您就需要在您的實體手機上來進行開發與測試,看看執行結果。