[食譜好菜] LiteDB 查詢怎麼愈來愈慢?Index 建了嗎?

上一篇介紹 LiteDB 基本的 CRUD,但是我相信這還是有點不太夠的,隨著寫入的資料愈來愈多,做非主鍵條件查詢肯定是會愈來愈慢的,LiteDB 在沒有建 Index 的情況之下,如果查詢條件不是主鍵,它是對整個 DB 做 Full Document Scan,意謂著 LiteDB 必須將每一筆資料反序化出來之後一筆一筆去比對,不僅慢又浪費記憶體。

...繼續閱讀 »

[食譜好菜] 輕巧方便的 LiteDB

LiteDB 是一個 Document-Oriented 的資料庫,是屬於 NoSQL 這一邊的,經常被拿來跟 SQL 陣營的 SQLite 比較,不過我個人是覺得這沒什麼好比的,都很好用,但是 LiteDB 不用下 SQL 語法,而且它有支援到 .Net Standard 2.0,意謂著 LiteDB 是可以跨平台的,我們可以在 Windows、Linux、macOS、Android、iOS 上使用它,非常適合在 Local 端拿來儲存資料,甚至於網站在 POC 期間這種使用者人數不多的情況之下,都可以先用 LiteDB 撐著。

...繼續閱讀 »

[廚餘回收] Xamarin.Forms Android 渲染 HTML 內容靠左、置中、靠右無效的問題。

Xamarin.Forms Android 要顯示 HTML 內容在一個 Label 上,網路上已經有許多範例,直接 Google 就可以找到答案,但通常都只能做很簡單的樣式,無法像在瀏覽器上那樣豐富,不過我要在這邊說一個有關於文字內容靠左、置中、靠右神奇的故事,如果我們去搜尋有關於這方面的訊息時,結論大都是「不支援」,是這樣的嗎?

...繼續閱讀 »

[料理佳餚] Xamarin.Forms 中不同的 DataItem 如何指定使用不同的 DataTemplate

這個用舉例的比較好說,假定我有一個 Car 集合,裡面有各式各樣的車種,要用一個 ListView 把車種名稱顯示出來,最簡單就是去定義一組 DataTemplate 裡面有一個 Label 把 Car 的 Name 綁定上去就可以了,但是保時捷說我們的名稱要用 Button 來呈現,哦~好~客戶最大,客戶說了算,那要怎麼弄?

...繼續閱讀 »

[料理佳餚] Xamarin.Forms 一定要了解清楚的 HorizontalOptions 及 VerticalOptions

剛開始要學習 Xamarin.Forms 開發時,一定會想說實作一個簡單的互動程式看看,查了語法敲了一串 <Button WidthRequest="100" HeightRequest="100" Text="I'm Button" /> 放上去之後,哇!怎麼 Button 那麼大?

我相信多數人會遭遇跟我一樣問題「怎麼讓 Button 依照我想要的位置去擺放?」

...繼續閱讀 »

[料理佳餚] Xamarin.Forms 中 Button IsEnable 與 Command 屬性的綁定糾葛

Button 要 Enable 或 Disable 除了直接操控 Button 本身的 IsEnabled 屬性之外,也可以藉由綁定的方式綁定一個變數,當變數值異動的時候 Button 的啟用狀態也跟著改變,有用 MVVM 模式在開發 Xamarin App 的朋友相信應該也會習慣先考慮用綁定的方式來操控 UI,但如果 Button 同時有為 IsEnabled 及 Command 提供綁定值,會有一些問題出現。

...繼續閱讀 »

[食譜好菜] Xamarin.Forms 內建的 DI Library - DependencyService

Xamarin.Forms 已經有一個內建的 DI Library 叫 DependencyService,它提供了簡單註冊及解析的方法,如果我們的使用情境並不複雜,DependencyService 就已經能夠滿足我們絕大部分的需求,有需要的時候再考慮去引用像 Unity 或 Autofac 這種能夠提供更彈性的註冊及解析方法的 Library,底下我就用取得 Android 及 iOS 設備平台識別碼的範例來簡單說明 DependencyService 如何使用。

...繼續閱讀 »