I have a problem with CollectionView in Windows. The XAML is
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage
x:Class="LibraryAppM.Views.EnquiryPage"
xmlns=";
xmlns:x=";
xmlns:library="clr-namespace:LibraryM;assembly=LibraryM"
xmlns:local="clr-namespace:LibraryAppM.ViewModels.Enquiry"
xmlns:toolkit=";
x:Name="enquiry"
Title="Richard's Library System"
x:DataType="local:EnquiryViewModel">
<ContentPage.BindingContext>
<local:EnquiryViewModel />
</ContentPage.BindingContext>
<ContentPage.Behaviors>
<toolkit:EventToCommandBehavior
BindingContext="{Binding Path=BindingContext, Source={x:Reference enquiry}, x:DataType=ContentPage}"
Command="{Binding GetAuthorsCommand}"
EventName="Appearing" />
</ContentPage.Behaviors>
<Grid
Padding="10,0,10,0"
RowDefinitions="Auto,Auto,Auto,Auto,*"
RowSpacing="10">
<Image
Grid.Row="0"
Aspect="AspectFit"
HeightRequest="185"
SemanticProperties.Description="A picture of library shelves"
Source="lib_pic.jpg" />
<Label
Grid.Row="1"
FontSize="20"
Text="Enquiry Page" />
<toolkit:Expander Grid.Row="2" IsExpanded="{Binding IsOpened}">
<toolkit:Expander.Header>
<HorizontalStackLayout MaximumHeightRequest="42">
<Label
FontSize="16"
HorizontalOptions="Start"
Text="{Binding SelectedText}" />
<Label
HorizontalOptions="Start"
Text="▼"
VerticalOptions="Center" />
</HorizontalStackLayout>
</toolkit:Expander.Header>
<CollectionView
HeightRequest="190"
ItemsSource="{Binding DataList}"
SelectedItem="{Binding SelectedItem}"
SelectionChangedCommand="{Binding SelectionCommand}"
SelectionMode="Single">
<CollectionView.ItemTemplate>
<DataTemplate x:DataType="library:Author">
<Label FontSize="16" Text="{Binding FullName}" />
</DataTemplate>
</CollectionView.ItemTemplate>
</CollectionView>
</toolkit:Expander>
<Grid
Grid.Row="3"
ColumnDefinitions="5*,10,Auto"
RowDefinitions="Auto">
<Label
Grid.Column="0"
HorizontalOptions="Start"
Text="Title" />
<Label
Grid.Column="2"
HorizontalOptions="Center"
Text="Return Date" />
</Grid>
<CollectionView
Grid.Row="5"
ItemsSource="{Binding BookList}"
VerticalScrollBarVisibility="Never">
<CollectionView.ItemsLayout>
<LinearItemsLayout ItemSpacing="3" Orientation="Vertical" />
</CollectionView.ItemsLayout>
<CollectionView.ItemTemplate>
<DataTemplate x:DataType="library:Book">
<Grid ColumnDefinitions="Auto,*,Auto">
<Label
Grid.Column="0"
HorizontalOptions="Start"
Text="{Binding Title}" />
<Label
Grid.Column="2"
HorizontalOptions="End"
Text="{Binding ReturnDate}" />
</Grid>
</DataTemplate>
</CollectionView.ItemTemplate>
</CollectionView>
</Grid>
</ContentPage>
The list scrolls but the last few items are missing. If I now add Padding to the Grid in the second CollectionView (for example <Grid ColumnDefinitions="Auto,*,Auto" Padding="20">
some of the missing items appear. This view works without the Padding modification in Android. I'm on VS 17.13.3 and Windows 11.
I have a problem with CollectionView in Windows. The XAML is
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage
x:Class="LibraryAppM.Views.EnquiryPage"
xmlns="http://schemas.microsoft/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft/winfx/2009/xaml"
xmlns:library="clr-namespace:LibraryM;assembly=LibraryM"
xmlns:local="clr-namespace:LibraryAppM.ViewModels.Enquiry"
xmlns:toolkit="http://schemas.microsoft/dotnet/2022/maui/toolkit"
x:Name="enquiry"
Title="Richard's Library System"
x:DataType="local:EnquiryViewModel">
<ContentPage.BindingContext>
<local:EnquiryViewModel />
</ContentPage.BindingContext>
<ContentPage.Behaviors>
<toolkit:EventToCommandBehavior
BindingContext="{Binding Path=BindingContext, Source={x:Reference enquiry}, x:DataType=ContentPage}"
Command="{Binding GetAuthorsCommand}"
EventName="Appearing" />
</ContentPage.Behaviors>
<Grid
Padding="10,0,10,0"
RowDefinitions="Auto,Auto,Auto,Auto,*"
RowSpacing="10">
<Image
Grid.Row="0"
Aspect="AspectFit"
HeightRequest="185"
SemanticProperties.Description="A picture of library shelves"
Source="lib_pic.jpg" />
<Label
Grid.Row="1"
FontSize="20"
Text="Enquiry Page" />
<toolkit:Expander Grid.Row="2" IsExpanded="{Binding IsOpened}">
<toolkit:Expander.Header>
<HorizontalStackLayout MaximumHeightRequest="42">
<Label
FontSize="16"
HorizontalOptions="Start"
Text="{Binding SelectedText}" />
<Label
HorizontalOptions="Start"
Text="▼"
VerticalOptions="Center" />
</HorizontalStackLayout>
</toolkit:Expander.Header>
<CollectionView
HeightRequest="190"
ItemsSource="{Binding DataList}"
SelectedItem="{Binding SelectedItem}"
SelectionChangedCommand="{Binding SelectionCommand}"
SelectionMode="Single">
<CollectionView.ItemTemplate>
<DataTemplate x:DataType="library:Author">
<Label FontSize="16" Text="{Binding FullName}" />
</DataTemplate>
</CollectionView.ItemTemplate>
</CollectionView>
</toolkit:Expander>
<Grid
Grid.Row="3"
ColumnDefinitions="5*,10,Auto"
RowDefinitions="Auto">
<Label
Grid.Column="0"
HorizontalOptions="Start"
Text="Title" />
<Label
Grid.Column="2"
HorizontalOptions="Center"
Text="Return Date" />
</Grid>
<CollectionView
Grid.Row="5"
ItemsSource="{Binding BookList}"
VerticalScrollBarVisibility="Never">
<CollectionView.ItemsLayout>
<LinearItemsLayout ItemSpacing="3" Orientation="Vertical" />
</CollectionView.ItemsLayout>
<CollectionView.ItemTemplate>
<DataTemplate x:DataType="library:Book">
<Grid ColumnDefinitions="Auto,*,Auto">
<Label
Grid.Column="0"
HorizontalOptions="Start"
Text="{Binding Title}" />
<Label
Grid.Column="2"
HorizontalOptions="End"
Text="{Binding ReturnDate}" />
</Grid>
</DataTemplate>
</CollectionView.ItemTemplate>
</CollectionView>
</Grid>
</ContentPage>
The list scrolls but the last few items are missing. If I now add Padding to the Grid in the second CollectionView (for example <Grid ColumnDefinitions="Auto,*,Auto" Padding="20">
some of the missing items appear. This view works without the Padding modification in Android. I'm on VS 17.13.3 and Windows 11.
1 Answer
Reset to default 0The solution for me was to add a Height in the ContentPage definitions. For example
<ContentPage ...
HeightRequest="{OnIdiom Desktop=740,
Phone=*}">
Grid.Row="5"
asGrid.Row="4"
for the second collectionview. – Liyun Zhang - MSFT Commented Mar 19 at 1:11