列表视图中项目的不同位置xamarin

different position of items in a listview xamarin

我正在尝试使用列表视图。 首先,我用它让我的项目在一列中对齐,它起作用了

现在我正在尝试寻找一种解决方案,以防止我的项目在列中对齐。

为此我有一个 8 行 8 列的网格。

我想要 : 中的第一项 Grid.Row="1" Grid.Column ="1" 我想要第二个项目: Grid.Row="3" Grid.Column ="3" 我想要第三项: Grid.Row="6" Grid.Column ="3" 我想要第四项: Grid.Row="8" Grid.Column ="1"

你觉得可能吗?你有什么主意吗? 我确实读过 ItemView 和 listview 文档,但我没有找到任何关于网格位置的信息。

国王问候

您需要自定义网格。

网格

public class MyGird: Grid
{
    Label first;
    Label second;
    Label third;
    Label fourth;


    public MyGird()
    {
        this.BindingContextChanged += MyGird_BindingContextChanged;


        for(int i = 0; i < 8; i++)
        {
            RowDefinitions.Add(new RowDefinition { Height = new GridLength(1, GridUnitType.Star) });
        }

        for (int i = 0; i < 8; i++)
        {
            ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) });
        }

        first = new Label { };
        second = new Label {  };
        third = new Label { };
        fourth = new Label {  };

        Children.Add(first, 0, 0);
        Children.Add(second, 2, 2);
        Children.Add(third, 5, 2);
        Children.Add(fourth, 7, 0);
    }

    private void MyGird_BindingContextChanged(object sender, EventArgs e)
    {
        var grid = sender as Grid;
        var obj = grid.BindingContext as List<string>;

        first.Text = obj[0];
        second.Text = obj[1];
        third.Text = obj[2];
        fourth.Text = obj[3];
    }
}

数据

 public List<string> list { get; set; }
    public Page2()
    {
        InitializeComponent();

        list = new List<string> { "1", "2", "3", "4" };

        this.BindingContext = this;
    }

用法

<local:MyGird BindingContext="{Binding list}"/>