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

C# 列表视图中项目的不同位置xamarin,c#,.net,listview,xamarin,listviewitem,C#,.net,Listview,Xamarin,Listviewitem,我正在尝试使用Listview。 首先,我用它来对齐列中的项目,它起作用了 现在,我正在尝试搜索一个解决方案,使其不对齐列中的项目 为此,我有一个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” 你认为有可能吗?你知道吗? 我曾经阅读过Item

我正在尝试使用Listview。 首先,我用它来对齐列中的项目,它起作用了

现在,我正在尝试搜索一个解决方案,使其不对齐列中的项目

为此,我有一个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文档,但没有找到任何关于网格位置的信息


您需要自定义网格

网格
公共类MyGird:Grid
{
标签优先;
标签第二;
标签第三;
标签四;
公共MyGird()
{
this.BindingContextChanged+=MyGird\u BindingContextChanged;
对于(int i=0;i<8;i++)
{
添加(newrowDefinition{Height=newgridLength(1,GridUnitType.Star)});
}
对于(int i=0;i<8;i++)
{
Add(newColumnDefinition{Width=newGridLength(1,GridUnitType.Star)});
}
第一个=新标签{};
第二个=新标签{};
第三个=新标签{};
第四个=新标签{};
添加(第一,0,0);
添加(第二,2,2);
儿童。加上(第三、五、二);
添加(第四、第七、第0项);
}
私有void MyGird_BindingContextChanged(对象发送方,事件参数e)
{
var grid=发送方作为网格;
var obj=grid.BindingContext作为列表;
第一,Text=obj[0];
second.Text=obj[1];
第三,Text=obj[2];
第四,Text=obj[3];
}
}
资料
公共列表{get;set;}
公共页2()
{
初始化组件();
列表=新列表{“1”、“2”、“3”、“4”};
this.BindingContext=this;
}
用法
你说得对,非常感谢这个示例,我现在了解了xamarin中渲染器的原理,非常感谢
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}"/>