Используйте свойство RowHeight
, чтобы установить высоту строки ListView. А затем используйте конвертер, чтобы динамически установить ширину опоясывающего лиша.
Создание конвертера:
public class MyConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return value ;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
Xaml:
<ContentPage.Resources>
<ResourceDictionary>
<local:MyConverter x:Key="MyConverter" />
</ResourceDictionary>
</ContentPage.Resources>
<ContentPage.Content>
<ListView
x:Name="listView"
BackgroundColor="Green"
HasUnevenRows="True"
ItemsSource="{Binding peoples}"
RowHeight="100">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<Grid BackgroundColor="Accent">
<Grid.RowDefinitions>
<RowDefinition Height="{Binding Source={x:Reference listView}, Path=RowHeight, Converter={StaticResource MyConverter}}" />
<RowDefinition Height="{Binding Source={x:Reference listView}, Path=RowHeight, Converter={StaticResource MyConverter}}" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="{Binding Source={x:Reference listView}, Path=RowHeight, Converter={StaticResource MyConverter}}" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<BoxView
Grid.Row="0"
Grid.Column="0"
BackgroundColor="Black" />
<BoxView
Grid.Row="0"
Grid.Column="1"
BackgroundColor="Blue" />
<BoxView
Grid.Row="1"
Grid.Column="0"
BackgroundColor="Yellow" />
<BoxView
Grid.Row="1"
Grid.Column="1"
BackgroundColor="DarkGray" />
</Grid>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</ContentPage.Content>
Я использую BoxView
для представления квадрата независимо от того, какой цвет черный.