TableView 是一個帶滾動條的數據列表而且行的樣式可以不同。不像ListView,TableView沒有概念化的ItemSource,所以items必須作爲子項手動的添加。
如下爲TableView在ios 、android、wp中的呈現樣式:
什麼情況下使用TableView:
1、呈現一個設置列表。
2、一個表單裏的數據集合
3、顯示數據,要求行的樣式不同。
TableView的結構:
TableRoot是TableView的一個根節點Root,而一個根節點包含一個或多個TableSection,TableSection包括多顯示元素。關係如下:
Content = new TableView {
Root = new TableRoot {
new TableSection...
},
Intent = TableIntent.Settings
};
每個TableSection由一個頭標題和一個或多個ViewCells組成,如下:
var section = new TableSection ("Ring") { //TableSection constructor takes title as an optional parameter
new SwitchCell {Text = "New Voice Mail"},
new SwitchCell {Text = "New Mail", On = true}
};
在XAML中的寫法如下:
<TableView Intent="Settings">
<TableRoot>
<TableSection Title="Ring">
<SwitchCell Text="New Voice Mail" />
<SwitchCell Text="New Mail" On="true" />
</TableSection>
</TableRoot>
</TableView>
TableView的顯示
TableView有一個Intent屬性,對應的值如下:
1、Data - 用於顯示數據輸入,注意ListView可能更加適合做滾動數據列表的顯示
2、Form - 用作Tableview的操作是一個Form的時候
3、Menu - 用作顯示一個菜單選項的時候
4、Settings - 用作顯示一個配置設置列表的時候。
創建TableView的Cell
TableView和ListView可以使用相同的Cells,但是在TableView中更多使用SwitchCell和EntryCell,而在ListView中更多使用TextCell和ImageCell。
SwitchCell是一個呈現狀態的控件,如on/off true/false。包括一個顯示文本和一個開關。如下圖:
EntryCell 是一個普通的文本編輯cell。
自定義的cell
除了Xamarin.Forms自帶的幾種Cell以外,也可以自定義Cell,得到想要的效果,自定義Cell,需要繼承ViewCell。