Search code examples
c#wpfxamlxamarinstacklayout

Last StackLayout Item is missing or cut


I am creating xamarin.forms page with a single ListView. Each list item template consist of one vertical StackLayout which contains 3 StackLayouts inside. The problem is: I can see only first two stacklayouts and the third is hidden or cut or skipped,i dont know, i cannot see it.

  <ContentPage.Content>
        <ListView x:Name="RoutesList" ItemsSource="{Binding Routes}">
            <ListView.ItemTemplate>
                <DataTemplate>
                    <ViewCell> 
                        <StackLayout BackgroundColor="#eee" Orientation="Vertical" Padding="5,0,0,5" VerticalOptions="FillAndExpand">

                            <StackLayout Orientation="Horizontal" VerticalOptions="StartAndExpand">
                                <Label Text="{Binding Name}" FontAttributes="Bold"></Label>
                                <Label Text="{Binding StartDate}" HorizontalOptions="EndAndExpand"></Label>
                            </StackLayout>

                            <StackLayout Orientation="Horizontal" BackgroundColor="#f94" >
                                <Label Text="{Binding RouteType}" FontAttributes="Bold"></Label>
                            </StackLayout>

                            <StackLayout Orientation="Horizontal" VerticalOptions="EndAndExpand">
                                <Label Text="{Binding CreatorFirstName}" FontAttributes="Bold" HorizontalOptions="EndAndExpand"></Label>
                                <Label Text="{Binding CreatorLastName}" FontAttributes="Bold" HorizontalOptions="End"></Label>
                            </StackLayout>

                        </StackLayout>
                    </ViewCell>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>
    </ContentPage.Content>

How to set layout properties correctly so all stacklayouts and their items contents will fit? All the binding properties are regular strings\dates. I know that there is GridLayout but i wonder how to do this using StackLayouts ?


Solution

  • You need to set the RowHeight property of the ListView to something that will show all items. Alternatively you may set HasUnevenRows to true, but it is a significantly slower option.