Work With Expander And Listview Xamarin

Sample date Updated on Apr 09, 2026
binding expander expander-content itemtemplate listview listview-xamarin sfexpander sflistview xamarin xamarin-forms

View document in Syncfusion Xamarin Knowledge base

Sample

<StackLayout>
    <expander:SfExpander DynamicSizeMode="Content" HeaderIconPosition="End" IconColor="WhiteSmoke" HeaderBackgroundColor="#03506f" >
        <expander:SfExpander.Header>
            <Grid HeightRequest="50">
                <Label Text="InBox" TextColor="White" HorizontalOptions="CenterAndExpand" VerticalOptions="CenterAndExpand"/>
            </Grid>
        </expander:SfExpander.Header>
        <expander:SfExpander.Content>
            <extListView:ExtendedListView x:Name="listView" ItemsSource="{Binding InboxInfo}" ItemSpacing="1" ItemSize="70">
                <extListView:ExtendedListView.ItemTemplate>
                    <DataTemplate>
                        <code>
                        . . .
                        . . .
                        <code>
                    </DataTemplate>
                </extListView:ExtendedListView.ItemTemplate>
            </extListView:ExtendedListView>
        </expander:SfExpander.Content>
    </expander:SfExpander>
</StackLayout>

C#:
public class ExtendedListView : SfListView
{
    VisualContainer container;

    public ExtendedListView()
    {
        container = this.GetVisualContainer();
        container.PropertyChanged += Container_PropertyChanged;
    }

    private void Container_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
    {
        Device.BeginInvokeOnMainThread(async() =>
        {
            var extent = (double)container.GetType().GetRuntimeProperties().FirstOrDefault(container => container.Name == "TotalExtent").GetValue(container);
            await Task.Delay(250);

            if (e.PropertyName == "Height")
                this.HeightRequest = extent;
        });
    }
}
Up arrow