如何使用xamarin c#在listview的同一行中划分两列



我有一个简单的ListView,里面装满了数据库中的数据。当我显示数据时,我想用两列显示,但值仍然排列在一列下面。

网格精确

xaml代码如下所示:

<StackLayout>
<ListView x:Name="MeteoView"
ItemsSource="{Binding Forecast}"
HeightRequest="200"
IsVisible="false">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="50*" />
<ColumnDefinition Width="50*" />
</Grid.ColumnDefinitions>
<Label  Grid.Column="0" Text="{Binding DisplayDat}"/>
<Label  Grid.Column="1" Text="{Binding DisplayT_2M}"/>
</Grid>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</StackLayout>

如何在一行上排列两列?

您的项目布局是正确的,很可能某些数据项只有日期,而其他数据项只有温度。在您的屏幕截图中,您有5个独立的数据条目,每个条目都被正确呈现(一行中的date-temp(。

如果你想验证布局和对布局的一些优化,我建议你在没有数据绑定的情况下开始:

  1. 保持平坦(ListView不需要外部StackLayout(
  2. 如果你只有一行,你可以跳过添加定义,它会被推断
  3. 如果所有列的宽度相同,则可以跳过定义,只应用Grid.Column属性
  4. ListView切换到CollectionView
<ListView x:Name="MeteoView"
ItemsSource="{Binding Forecast}"
HeightRequest="200"
IsVisible="false">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<Grid>
<Label Grid.Column="0" Text="Date"/>
<Label Grid.Column="1" Text="Temperature"/>
</Grid>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>

最新更新