C# 如何在Xamarin.Forms中创建多列ListView?

C# 如何在Xamarin.Forms中创建多列ListView?,c#,xamarin.forms,C#,Xamarin.forms,我有一列的listview,但我想像一个中继器一样分成两列。是否可能以xamarin.forms的形式出现 您应该为此创建自己的控件,或者查看一下我认为您可以使用ViewCell创建一个DataTemplate。将网格添加到行=1、列=2的ViewCell中 像这个样的东西 <ListView x:Name="listView"> <ListView.ItemTemplate> <DataTemplate> <ViewCell&g

我有一列的listview,但我想像一个中继器一样分成两列。是否可能以xamarin.forms的形式出现

您应该为此创建自己的控件,或者查看一下

我认为您可以使用ViewCell创建一个DataTemplate。将网格添加到行=1、列=2的ViewCell中

像这个样的东西

<ListView x:Name="listView">
  <ListView.ItemTemplate>
    <DataTemplate>
      <ViewCell>
        <Grid>
          ...
          <Label Text="{Binding Name}" FontAttributes="Bold" />
          <Label Grid.Column="1" Text="{Binding Age}" />
          <Label Grid.Column="2" Text="{Binding Location}" ... />
        </Grid>
      </ViewCell>
    </DataTemplate>
  </ListView.ItemTemplate>
</ListView>

...
你可以找到描述

    <ContentPage.Content>

        <StackLayout>
            <Grid>
                <Grid.RowDefinitions>
                    <RowDefinition Height="Auto" />
                </Grid.RowDefinitions>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="30*" />
                    <ColumnDefinition Width="30*" />
                    <ColumnDefinition Width="30*" />
                </Grid.ColumnDefinitions>
                <Label  Grid.Column="0" Grid.Row="0" Text="ID"/>
                <Label  Grid.Column="1" Grid.Row="0" Text="USERS"/>
                <Label Grid.Column="2" Grid.Row="0" Text="PASSWORD"/>

            </Grid>


        <ListView x:Name="listx">
            <ListView.ItemTemplate>
                <DataTemplate>
                    <ViewCell>
                        <Grid>
                            <Grid.RowDefinitions>
                                <RowDefinition Height="Auto" />
                            </Grid.RowDefinitions>
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="30*" />
                                <ColumnDefinition Width="30*" />
                                <ColumnDefinition Width="30*" />
                            </Grid.ColumnDefinitions>

                            <Label  Grid.Column="0" Text="{Binding id}"/>
                            <Label  Grid.Column="1" Text="{Binding usr}"/>
                            <Label Grid.Column="2" Text="{Binding pass}"/>
                        </Grid>



                    </ViewCell>
                </DataTemplate>
            </ListView.ItemTemplate>

        </ListView>
        </StackLayout>

    </ContentPage.Content>
</ContentPage>
contentPage.xaml.cs

public partial class UserPage : ContentPage
    {

        ObservableCollection<UserModel> Usr_List = new ObservableCollection<UserModel>();

        public UserPage ()
        {
            InitializeComponent ();
            //test data population
            this.Usr_List.Add(new UserModel { id = 1, usr = "test", pass = "test" });
            this.Usr_List.Add(new UserModel { id = 2, usr = "test1", pass = "test1" });
            this.Usr_List.Add(new UserModel { id = 3, usr = "test2", pass = "test2" });

            listx.ItemsSource = this.Usr_List;

        }
    }
public部分类UserPage:ContentPage
{
ObservableCollection Usr_List=新的ObservableCollection();
公共用户页()
{
初始化组件();
//测试数据总体
这个.Usr_List.Add(新用户模型{id=1,Usr=“test”,pass=“test”});
这个.Usr_List.Add(新用户模型{id=2,Usr=“test1”,pass=“test1”});
这个.Usr_List.Add(新用户模型{id=3,Usr=“test2”,pass=“test2”});
listx.ItemsSource=this.Usr\u列表;
}
}

我发现这个解决方案很有用,但我们仍然需要为每个项目的click listener做一些变通。
public partial class UserPage : ContentPage
    {

        ObservableCollection<UserModel> Usr_List = new ObservableCollection<UserModel>();

        public UserPage ()
        {
            InitializeComponent ();
            //test data population
            this.Usr_List.Add(new UserModel { id = 1, usr = "test", pass = "test" });
            this.Usr_List.Add(new UserModel { id = 2, usr = "test1", pass = "test1" });
            this.Usr_List.Add(new UserModel { id = 3, usr = "test2", pass = "test2" });

            listx.ItemsSource = this.Usr_List;

        }
    }