2015-02-23 92 views
0

目前使用ListView的我只發現可以爲單元格創建模板,這使得每個單元格看起來完全一樣。在列表視圖中不能有多個自定義單元格。有些解決方法像隱藏內容一樣依賴於內容,但是這看起來很不方便。ListView中的多個自定義單元格(跨平臺)

我想在tableview上使用listview的原因是因爲我們打算做插入,刪除,動態顯示某些單元格,而listview可以綁定到數據源。

+0

你需要的是'DataTemplateSelector'。您可以輕鬆構建自己的Windows Phone 8版本,您可以使用它作爲實現的基本代碼。 – 2015-02-23 21:29:00

回答

0

創建您自己的ViewCell,它將覆蓋綁定上下文更改方法。當綁定更改時,將ViewCell的視圖設置爲與視圖模型類型相匹配的視圖,並設置單元格的高度。下面是一個快速示例,應該讓你知道如何完成它。

public class DataTemplateCell1 : ViewCell 
{ 
    protected override void OnBindingContextChanged() 
    { 
     var vm1 = this.BindingContext as ViewModel1; 
     if (vm1 != null) 
     { 
      this.View = new View1() { HeightRequest = 40 }; 
      this.Height = this.View.HeightRequest; 
      return; 
     } 

     var vm2 = this.BindingContext as ViewModel2; 
     if (vm2 != null) 
     { 
      this.View = new View2() { HeightRequest = 80 }; 
      this.Height = this.View.HeightRequest; 
      return; 
     } 

     base.OnBindingContextChanged(); 
    } 
}