2017/6/30

Xamarin.Forms 教學系列文(十九.貳 - 1)ListView - ItemSelected & ObservableCollection



學習目標
  • ListView 的 ItemSource - 賦予資料的屬性
  • data binding with SelecctedItem
  • ObservableCollection - 會發出更動通知的資料集

ListView 應該是 Xamarin.Forms 最重要的物件之一,如果有寫過 Webform,等級大概跟 GridView 差不多...

ListView 是一個顯示 相同類型資料集  的物件,

其中最重要的屬性就是 ItemsSource (type of IEnumerable ),一個可以讓我們指派資料集的屬性,有了這個屬性我們才能隨心所欲地讓 List 顯示資料。

ListView 還有支援 單一項目 選擇,會將點選的項目設為 SelectedItem (type of object),SelectedIem 初始值為 null。

點選項目時會觸發 ItemTapped ItemSelected 兩個 事件,點擊同樣的項目只會再次觸發 ItemTapped
只有 SelectedItem 屬性更改時,才會觸發 ItemSelected 事件。

2017/6/27

Xamarin.Forms 教學系列文(十九.壹)Collection Views - Introduction & Picker





學習目標
  • 知道一下 Collection Views 是什麼
  • 三個 View 的差異
  • Picker 嘿嘿嘿

本章節要探討的是 Collection type 對應的 Collection View。

在資訊界,各類型的集合是不可缺少的,所有高階語言都支援陣列 (Arrays) 和結構 (Structure),
這兩個集合互相補足 - 陣列通常是相同類型的資料集,結構則是相關但不同類型的資料集。

為了擴充這些基本集合,.NET 添加了幾個有用的類別:
  • IEnumerable - 允許在資料集中尋覽
  • ICollection - 繼承自 IEnumerable,並增加計數的功能
  • IList - 繼承自 ICollection,支援索引 (Indexing)、 新增 (adding) 和移除 (removing)

回到本章節重點 -

Xamarin.Forms 定義了三種跟資料集合有關的 View:
  • Picker - 可讓使用者 選擇一個子項目,集合項目一般不超過 12 個
  • ListView - 通常有 很多很多 子項目,資料列的呈現通常為 同樣的格式
  • TableView - 通常為各種類型 Cell 的集合,用於顯示數據或管理用戶輸入,像是 各類型的表單應用程式設定

2017/6/20

Xamarin.Forms 教學系列文(十八.貳 - 1)MVVM - ViewModel LifeCycle

接續上一小節的計算機,

遇到的問題:
當手機應用程式突然關閉 (例如突然有人打電話來),再重新打開應用程式時,剛剛用計算機算到一半的值還會在嗎??

真相是... 那值被電話 Gank 一下就不見了...

簡單來說:
當 App 被中斷後重啟,希望看到 ViewModel 的值,是中斷前操作的結果吧!!

這邊將配合 第六章 講到的 Application.Current.Properties,來實作 ViewModel 復活大法。

Xamarin.Forms 教學系列文(十八.貳) MVVM - Command,當按鈕也要執行 ViewModel 的 Function




學習目標
  • Visual Element 與 Command 的綁定
  • CanExecute - 控制 Command 能否執行

Data binding 很強很好用,能幫我們把 ViewModel 的屬性和 View 的屬性連結起來,不用寫半行 事件控制 。

但,(萬惡的 But)

不是所有東西都是屬性啊... 有時候 ViewModel 的屬性要更改,還是得由事件來觸發。

問題來了*
當 Button 點擊時,同時要去更改 ViewModel 的屬性,該怎麼做?

回頭寫 Clicked 嗎?? 錯!!
ViewModel 提供了一個接口,叫做 Command Interface

簡單的說:
Button 可以綁定 ViewModel 內的方法,點擊時順便去更改 ViewModel 的屬性,再經由 INPC 去通知 View 做更動。

2017/6/13

Xamarin.Forms 教學系列文(十八.壹 - 1) MVVM - INPC 縮寫



接續上一小節,單純想獨立出來以方便資料查找與引用~

前一小節的兩支範例可以發現兩個問題:
  • OnPropertyChanged 使用 弱型別 當作參數 (程式常常死在這種地方,打錯一個字,幹)
  • set 有太多重複的程式碼,每次都要寫判斷值是否相同這件事

Xamarin.Forms 教學系列文(十八.壹) MVVM - 事件自動化 (這章很重要啊各位大哥)




學習目標
  • MVVM 架構
  • ViewModel 建立
  • INPC 縮寫 (極度重要,在下一小節)

太久沒發文居然被朋友說富監... 
讀這章前請先拜讀 16 章 Data Binding,至少要懂這兩個概念
  1.  Source → Target
  2.  Binding 的寫法

MVVM 是一種程式架構,從我們較耳熟能詳的 MVC 架構演化而來,讓這個架構更適合 Xamarin 或 手機開發 使用,最大的好處是降低維護成本。

其目的為:
程式不用自行處理事件控制以及前端物件的資料變化

為了達到這個目的:
需要建立 Model 和 View 的溝通橋樑,亦即 ViewModel擁有主動通知前端的功能

白話文就是:
當後端資料更改時 (編輯或新增),前端顯示資料也會自動跟著改


雖然不寫 MVVM,只用事件驅動 App還是能動,不過一旦學會能夠省下許多維護的成本,有多個 VisualElement 資料來源是同一個時,好用到炸裂