We use cookies to give you the best experience on our website. If you continue to browse, then you agree to our privacy policy and cookie policy. Image for the cookie policy date
Unfortunately, activation email could not send to your email. Please try again.
Syncfusion Feedback

How to adjust the parent height based on total items height when AutoFitMode is Height?

Platform: Xamarin.Forms |
Control: SfListView

Xamarin ListView(SfListView) allows us to adjust the parent height based on bind items when AutoFitMode is Height by setting the height of VisualContainer to the height of StackLayout (parent for SfListView), it can be done by customizing the StackLayout as StackLayoutExt (parent for SfListView) in sample level. It will update whenever items are added or removed.

Please refer below code snippet for customizing StackLayout.


public class StackLayoutExt : StackLayout
    public StackLayoutExt()
    public void LayoutChildren(double width, double height)
        this.LayoutChildren(0, 0, width, height);


In the above code snippet, the internal LayoutChildren method is added to set the height of parent while layout the children.

Defining SfListView inside StackLayoutExt:


<local:StackLayoutExt VerticalOptions="CenterAndExpand" HorizontalOptions="CenterAndExpand" 
                           x:Name="baseLayout" BackgroundColor="Teal">
                <syncfusion:SfListView ItemsSource="{Binding BookInfo}" ItemSize="50"
                                  x:Name="listView" BackgroundColor="Yellow"
                                  AutoFitMode="Height" SelectionMode="None">


In the Loaded Event the total extent of VisualContainer is set as the height of StackLayout and the ItemsSource is changed with increased items which increases the height of SfListView along with the height of StackLayout.

public partial class MainPage : ContentPage
    public MainPage()
        listView.Loaded += ListView_Loaded;
    private void ListView_Loaded(object sender, ListViewLoadedEventArgs e)
        var visualContainer = listView.GetVisualContainer();
        var totalextent = (double)visualContainer.GetType().GetRuntimeProperties().FirstOrDefault(container => container.Name == "TotalExtent").GetValue(visualContainer);
        var parent = new StackLayoutExt();
        parent.LayoutChildren(this.Width, totalextent);
    private void ChangeItemsSource_Clicked(object sender, EventArgs e)
        var visualContainer = listView.GetVisualContainer();
        baseLayout.HeightRequest = visualContainer.Height;


Click here to download the sample

2X faster development

The ultimate Xamarin UI toolkit to boost your development speed.
You must log in to leave a comment

Please sign in to access our KB

This page will automatically be redirected to the sign-in page in 10 seconds.

Up arrow icon

Warning Icon You are using an outdated version of Internet Explorer that may not display all features of this and other websites. Upgrade to Internet Explorer 8 or newer for a better experience.Close Icon

Live Chat Icon For mobile