【问题标题】:Xamarin.Forms customize listview style to zigzagXamarin.Forms 将列表视图样式自定义为 zigzag
【发布时间】:2015-10-16 09:26:58
【问题描述】:

我的目的是创建一个具有类似方向的列表视图

单元格1 单元格2

单元3 单元4

单元5 单元6

细胞7细胞8

默认情况下,每个单元格占用列表视图的整个宽度,现在我想像之字形一样更改它,每个单元格都是一个视图单元(每个单元格都可以单独绑定到列表中的一个项目)。为了做到这一点,我想我需要找到 listview 在哪里排列它的单元格并改变它的方式。

对此有什么想法吗?

【问题讨论】:

  • 您可能正在寻找GridView,您告诉它以两列布局。无论如何,你间接地要求一个教程,它不适合 StackOverflow。因此,我将您的问题标记为关闭。

标签: listview xamarin xamarin.forms xamarin-studio


【解决方案1】:

在同样的情况下,我最终通过使用 DataTemplate 扩展 Grid 创建自定义 GridItemsView<T>
这里给你一个提示:

    var columns = new ColumnDefinitionCollection();

    for (int i = 0; i < columnsCount; i++)
    {
        columns.Add(new ColumnDefinition());
    }

    SetValue(ColumnDefinitionsProperty, columns);

    int rowsCount = (itemsCount - 1) / columnsCount + 1;

    var rows = new RowDefinitionCollection();

    for (int i = 0; i < rowsCount; i++)
    {
        rows.Add(new RowDefinition());
    }

    SetValue(RowDefinitionsProperty, rows);

还有:

    int col = 0;
    int row = 0;

    foreach (T item in items)
    {
        View child = (View) Template.CreateContent();
        child.BindingContext = item;

        child.SetValue(Grid.RowProperty, row);
        child.SetValue(Grid.ColumnProperty, col);

        col++;

        if (col == this.columnsCount)
        {
            col = 0;
            row++;
        }

        if (index >= 0)
        {
            Children.Insert(index++, child);
        }
        else
        {
            Children.Add(child);
        }
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多