1

使用 iOS 和 Android,我可以创建可滚动的列表视图,绑定到一个列表,其中每一行可以有不同的控件。如何使用 Xamarin.Forms 执行此操作?据我所知,ListView 控件只需要一个模板,并且在创建可以更改控件的每一行时没有重载或回调(这是我可以使用 iOS 和 Android 执行的操作)。

4

3 回答 3

2

您可以使用表视图。在 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);
于 2014-09-03T16:24:06.320 回答
1

一种简单的方法是使用转换器并显示/隐藏每个单元格所需的内容。

您可以将项目绑定到网格的可见性,在中间您使用转换器检查是否要根据项目显示或隐藏网格。

这是可能的解决方法。

我希望 Xamarin Forms 团队添加一个 ContentView,将来可以将其视图绑定到,或者在单元格中提供一个 CellTemplateSelector。

于 2014-07-29T15:35:39.687 回答
0

你的行有多不同?

如果它们非常不同,您需要为它制作一个自定义单元格渲染器,可能还有一个自定义列表视图和渲染器。

如果行没有那么不同,您可能想尝试使用控件的超集并根据项目绑定隐藏您不需要的那些 - 这可能需要您在单元格的视图模型中添加额外的字段

您可能还想尝试内部带有 StackLayout 的 Scrollview - 绝对不是本机 l&f,因此取决于您的目标,这可能不适用。

于 2014-07-28T14:03:40.163 回答