2017/8/28

Xamarin.Forms 教學系列文(二十四.壹)Page Navigation - 頁面導覽


學習目標
  • Navigation 頁面導覽
  • 導覽的頁面類型 Modaless & ModalPage
  • Navigation 的一些屬性

頁面導覽 在資訊界其實很常見,例如你正在看這篇教學所使用的瀏覽器,那左上角的上一頁,就是一種頁面導覽。

如果讓我們以程式的觀點來看待 頁面導覽 ,其實就是 實作堆疊(Stack)

當有新頁面出現時,就將此頁面 Push 進 Stack 並顯示他,
當要回到前一頁時,就 Pop 掉 Stack 第一筆,並顯示最上面一筆的頁面,

而這也是 Xamarin.Forms 實作 Navigation 的方法,
所以會看到 Navigation 類別提供了 Push Pop 的方法,甚至可以手動取得 Navigation Stack 來做進一步處理

導覽架構內一定有初始頁,我們通常稱作 Main page、Home page 或是 Start page。

而從 Main page 準備導覽時,下一頁的類型我們有兩種可以選擇:
  • Modeless page (有返回鈕) - 其實也就是正常的導覽頁面
  • Modal page (無返回鈕)

我們會從 Navigation 類別所提供的方法來做介紹,並用範例讓大家了解這兩種頁面類型的差異。 

Xamarin.Forms Change Navigation Bar Font Family & Size - Android


由於目前 Xamarin.Forms 沒有屬性可以設定,Navigation Bar 的字體大小

那... App 的設計畫面就是會覺得醜醜的...

這問題其實困擾一陣子了...剛好心血來潮再翻一下資料,終於弄出來,

但目前只有 Android 版本就是了...

作法一樣從 CustomRender 下手,並在各平台專案內實作,有人有找到更好的方法請告訴我...

2017/8/24

Xamarin.Forms 教學系列文(二十三.參)Behaviors - Visual Element 手動附加功能


學習目標
  • Behavior- 元件的自定義附加行為
  • 在 Behavior 內加入 Bindable Property

Trigger 和 Behavior 其實滿像的,所有 Trigger 可以做的事情都能用 Behavior 完成,

但,Behavior 要寫的程式碼比 Trigger 多,

所以,能用 Trigger 解決的問題就不要用 Behavior !!!
Behavior 就像是 Trigger 的加強版,當然也可以在 XAML 重複使用。

等等,所以 Behavior 到底是什麼??

可以想成:
幫 Visual Element 手動附加新功能。

來看一下範例,
當 Entry 輸入非數字時,文字會變成紅色,

本範例就是附加 判斷是否為數字  的新功能

2017/8/23

Xamarin.Forms 教學系列文(二十三.貳)XAML 觸發程式 - DataTrigger & MultiTrigger



學習目標
  • DataTrigger - Binding 資料觸發
  • MultiTrigger - 多條件式 Trigger
  • MltiTrigger 利用 隱藏Switch 做中介轉換 

上一小節已經學會,針對 特定屬性 或 特定事件 更改時去觸發 Trigger 。

DataTrigger 的寫法其實跟 Trigger 很像,只是差在將 Property 改成 Binding

DataTrigger 的功能為
偵測到 databiding 物件 的值是否更改,再決定觸發 Trigger 動作。

而 databinding 可以搭配 MVVM 或是其他 Visual Element 物件。

2017/8/16

Xamarin.Forms 教學系列文(二十三.壹)XAML 觸發程式 - Trigger & EeventTrigger


學習目標
  • Trigger - 屬性觸發
  • EeventTrigger - 事件觸發

當初在 第七章 介紹 XAML 時,XAML 似乎就僅是個建構使用者介面的標籤語法而已,

但到了二十三章,Xamairn 想讓 XAML 做更多 後端能做 的事情,
Triggers Behaviors 就這樣誕生了

Triggers 可以在屬性條件成立時,同時更改其他的屬性值。
Behaviors 則是更開放性的用法,在 Visual Element 內加入更多客製化的功能。

不論是 Triggers 或是 Behavior,都可以寫在 Style 內,讓程式 重複使用

2017/8/8

Xamarin.Forms 教學系列文(二十二)Animation - 物件動畫


學習目標
  • Animation - RotateTo, ScaleTo, Translateto, FadeTo, LayoutTo
  • 第二次點擊失效原因與解法
  • Easing Function - 動畫曲線

Xamarin.Forms 對物件的形狀位置變化,除了像上一章節手動更改物件的屬性,來放大縮小移動位置。

同時也提供了一些簡易的 動畫方法,如漸漸消失,移動到某處,變大,旋轉..

動畫方法目前不支援寫在 XAML,全部都要用 C#

直接看一支簡單的範例:

2017/8/3

Xamarin.Forms LineSpacingLabel - 可調整行距的 Label



剛好有人問,稍微研究一下及做個整理

問題就是:
如何增加 Label 內的文字行距 ( Xamarin.Forms 並沒有提供這屬性啊 ...

但仔細一看,其實 Android 和 iOS 都有提供行距的屬性可以設定... (看來只是 Xamarin.Forms 不想提供給我們用啊...

所以,目前的做法就是自行 客製化 一個附有 行距屬性 的 Label  (客製化教學在後面的章節...

讓我們姑且叫他 LineSpacingLabel