Xamarin Forms DataTemplateSelector介紹

DataTemplateSelector可以幫助我們實現動態選擇數據綁定的模版,如通過ListView+DataTemplateSelector實現微信朋友圈或聊天列表效果。

Github已有聊天效果圖

喜歡閱讀代碼請直接移步:https://github.com/nishanil/Xamarin.Forms-Samples/tree/master/DataTemplateSelector


本文通過一個簡單的Demo練習DataTemplateSelector的使用。
首先在新建的空項目中添加三個Model類:

其中BaseModel作基類,表示數據源類型,TitleModelDescribeModel分別是BaseModel的子類表示數據源的不同情況。作為練習BaseModel中僅定義了一個String類型屬性Title,TitleModel只是單純的繼承BaseModel,DescribeModel繼承BaseModel的同時增加了一個String類型屬性Describe。

接下來開始為本文的主角編碼,聲明一個MyDataTemplateSelector繼承DataTemplateSelector

其中TitleTemplate和DescribeTemplate是我們根據情況定義的兩個數據模版,TitleTemplate對應TitleModel,DescribeTemplate對應DescribeModel。
OnSelectTemplate方法是我們必須重寫的一個方法,在OnSelectTemplate方法中判斷item的類型或某個屬性值返回對應的DataTemplate。

接下來主要介紹DataTemplateSelector在Xaml中的使用。

首先在Resources中定義我們需要的兩個DataTemplate。

為了方便用TextCell代替自定義Cell,兩個DataTemplate 的Key值方便使用區分分別定義為TitleTemplate和DescribeTemplate,可以定義你自己的任意值。

定義了需要的DataTemplate后再定義我們的MyDataTemplateSelector。并將提前定義好的DataTemplate通過StaticResource賦值給MyDataTemplateSelector的TitleTemplate和DescribeTemplate屬性。

Demo中所有內容都定義在了ContentPage.Resources內,完整定義代碼。

定義ListView時再將我們定義好的MyDataTemplateSelector對象賦值給ListView的ItemTemplate屬性

模擬數據源并綁定到ListView:

Demo效果圖:

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,559評論 25 708
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,993評論 19 139
  • ListView用來顯示列表數據,適合單一類型數據集合。 ListView屬性 Footer :object類型,...
    MayueCif閱讀 12,659評論 4 10
  • 發現 關注 消息 iOS 第三方庫、插件、知名博客總結 作者大灰狼的小綿羊哥哥關注 2017.06.26 09:4...
    肇東周閱讀 12,257評論 4 61
  • (1) 先看幾個事實,我們再說接下來的事情。 韓國保健福利部和疾病管理本部在2014年8月發布報告稱,截至2012...
    古侯子閱讀 794評論 14 17