使用iOS和Android,我可以创建可滚动列表视图,绑定到列表,其中每行可以有不同的控件。我如何使用Xamarin.Forms做到这一点?据我所知,ListView控件只占用一个模板,并且在创建每一行时都没有重载或回调,我可以更改控件(这是我可以用iOS和Android做的)。
答案 0 :(得分:2)
您可以使用TableView。在TableView中,每行指定每个自定义ViewCell,但是丢失了ListView的项选择处理程序。例如:
var table = new TableView {
Intent = TableIntent.Settings,
Root = new TableRoot("Table Name"),
HasUnevenRows = true,
VerticalOptions = LayoutOptions.FillAndExpand,
HorizontalOptions = LayoutOptions.FillAndExpand,
BackgroundColor = Color.Transparent
};
var section = new TableSection ();
//dataList in my case is the list of elements that populate each row
dataList.ForEach (e => {
//Add custom Cells to the TableSection
section.Add(new ContactCardCell{BindingContext = e});
});
table.Root.Add (section);
答案 1 :(得分:1)
一种简单的方法是使用转换器并显示/隐藏每个单元格所需的内容。
您可以将项目绑定到网格的可见性,在中间使用转换器来检查是否要根据项目显示或隐藏网格。
这是可能的解决方法。
我希望Xamarin Forms团队添加一个ContentView,可以将其视图绑定到将来或在单元格中提供CellTemplateSelector。
答案 2 :(得分:0)
你的行有多不同?
如果它们非常不同,您需要制作自定义单元格渲染器,并且可能需要自定义列表视图和渲染器。
如果行没有那么不同,你可能想尝试使用控件的超集并根据项绑定隐藏你不需要的那些 - 这可能需要你在你的单元的viewmodel中添加额外的字段< / p>
您可能还想尝试在内部使用StackLayout的Scrollview - 绝对不是原生的l&amp; f,这取决于您的目标,这可能不适用。