Load More in .NET MAUI ComboBox
21 Jul 202618 minutes to read
The .NET MAUI ComboBox control supports displaying a limited number of suggestions in the drop-down and loading additional items on demand through a Load More button. This is useful when binding a large data set and you want to keep the drop-down compact.
Prerequisites
Before using the SfComboBox, ensure the following NuGet package is installed in your .NET MAUI project:
Syncfusion.Maui.Inputs
For a step-by-step setup, refer to the Getting Started documentation.
Maximum suggestions
Use the MaximumSuggestion property to limit the number of suggestions displayed in the drop-down. When the filtered results exceed this value, a Load More button appears at the bottom of the drop-down so the user can load additional items. The default value is 0.
<editors:SfComboBox x:Name="comboBox"
IsFilteringEnabled="True"
IsEditable="True"
ItemsSource="{Binding SocialMedias}"
MaximumSuggestion="2"
DisplayMemberPath="Name"
TextMemberPath="Name">
<editors:SfComboBox.BindingContext>
<local:SocialMediaViewModel />
</editors:SfComboBox.BindingContext>
</editors:SfComboBox>SocialMediaViewModel socialMediaViewModel = new SocialMediaViewModel();
SfComboBox comboBox = new SfComboBox
{
MaximumSuggestion = 2,
IsEditable = true,
IsFilteringEnabled = true,
TextMemberPath = "Name",
DisplayMemberPath = "Name",
ItemsSource = socialMediaViewModel.SocialMedias,
BindingContext = socialMediaViewModel,
};// ViewModel
public class SocialMediaViewModel
{
public ObservableCollection<SocialMedia> SocialMedias { get; set; }
public SocialMediaViewModel()
{
this.SocialMedias = new ObservableCollection<SocialMedia>
{
new SocialMedia { Name = "Facebook", ID = 0 },
new SocialMedia { Name = "Google Plus", ID = 1 },
new SocialMedia { Name = "Instagram", ID = 2 },
new SocialMedia { Name = "LinkedIn", ID = 3 },
new SocialMedia { Name = "Skype", ID = 4 },
new SocialMedia { Name = "Telegram", ID = 5 },
new SocialMedia { Name = "Twitter", ID = 6 },
new SocialMedia { Name = "WhatsApp", ID = 7 },
new SocialMedia { Name = "YouTube", ID = 8 }
};
}
}
public class SocialMedia
{
public string Name { get; set; }
public int ID { get; set; }
}The following image illustrates the result of the above code:

NOTE
If
MaximumSuggestionis set to a value greater than or equal to the number of filtered items, theLoad Morebutton is not displayed.
Load More text customization
Use the LoadMoreText property to customize the text shown on the Load More button. The default value is "Load More".
<editors:SfComboBox x:Name="comboBox"
IsFilteringEnabled="True"
IsEditable="True"
ItemsSource="{Binding SocialMedias}"
MaximumSuggestion="2"
LoadMoreText="Load more items"
DisplayMemberPath="Name"
TextMemberPath="Name">
<editors:SfComboBox.BindingContext>
<local:SocialMediaViewModel />
</editors:SfComboBox.BindingContext>
</editors:SfComboBox>SocialMediaViewModel socialMediaViewModel = new SocialMediaViewModel();
SfComboBox comboBox = new SfComboBox
{
MaximumSuggestion = 2,
LoadMoreText = "Load more items",
IsEditable = true,
IsFilteringEnabled = true,
TextMemberPath = "Name",
DisplayMemberPath = "Name",
ItemsSource = socialMediaViewModel.SocialMedias,
BindingContext = socialMediaViewModel,
};// ViewModel
public class SocialMediaViewModel
{
public ObservableCollection<SocialMedia> SocialMedias { get; set; }
public SocialMediaViewModel()
{
this.SocialMedias = new ObservableCollection<SocialMedia>
{
new SocialMedia { Name = "Facebook", ID = 0 },
new SocialMedia { Name = "Google Plus", ID = 1 },
new SocialMedia { Name = "Instagram", ID = 2 },
new SocialMedia { Name = "LinkedIn", ID = 3 },
new SocialMedia { Name = "Skype", ID = 4 },
new SocialMedia { Name = "Telegram", ID = 5 },
new SocialMedia { Name = "Twitter", ID = 6 },
new SocialMedia { Name = "WhatsApp", ID = 7 },
new SocialMedia { Name = "YouTube", ID = 8 }
};
}
}
public class SocialMedia
{
public string Name { get; set; }
public int ID { get; set; }
}The following image illustrates the result of the above code:

Load More view customization
The .NET MAUI ComboBox allows customizing the user interface of the Load More view. Use the LoadMoreTemplate property to provide a custom DataTemplate.
<editors:SfComboBox x:Name="comboBox"
IsFilteringEnabled="True"
IsEditable="True"
ItemsSource="{Binding SocialMedias}"
MaximumSuggestion="2"
DisplayMemberPath="Name"
TextMemberPath="Name">
<editors:SfComboBox.BindingContext>
<local:SocialMediaViewModel />
</editors:SfComboBox.BindingContext>
<editors:SfComboBox.LoadMoreTemplate>
<DataTemplate>
<Grid BackgroundColor="LightGreen">
<Label Text="Load more items..."
VerticalOptions="Center"
HorizontalOptions="Center"
FontAttributes="Bold"
TextColor="Red" />
</Grid>
</DataTemplate>
</editors:SfComboBox.LoadMoreTemplate>
</editors:SfComboBox>SocialMediaViewModel socialMediaViewModel = new SocialMediaViewModel();
SfComboBox comboBox = new SfComboBox
{
IsFilteringEnabled = true,
IsEditable = true,
ItemsSource = socialMediaViewModel.SocialMedias,
MaximumSuggestion = 2,
DisplayMemberPath = "Name",
TextMemberPath = "Name",
BindingContext = socialMediaViewModel,
};
comboBox.LoadMoreTemplate = new DataTemplate(() =>
{
var grid = new Grid
{
BackgroundColor = Colors.LightGreen,
};
var label = new Label
{
Text = "Load more items...",
TextColor = Colors.Red,
HorizontalOptions = LayoutOptions.Center,
VerticalOptions = LayoutOptions.Center,
FontAttributes = FontAttributes.Bold,
};
grid.Children.Add(label);
return grid;
});// ViewModel
public class SocialMediaViewModel
{
public ObservableCollection<SocialMedia> SocialMedias { get; set; }
public SocialMediaViewModel()
{
this.SocialMedias = new ObservableCollection<SocialMedia>
{
new SocialMedia { Name = "Facebook", ID = 0 },
new SocialMedia { Name = "Google Plus", ID = 1 },
new SocialMedia { Name = "Instagram", ID = 2 },
new SocialMedia { Name = "LinkedIn", ID = 3 },
new SocialMedia { Name = "Skype", ID = 4 },
new SocialMedia { Name = "Telegram", ID = 5 },
new SocialMedia { Name = "Twitter", ID = 6 },
new SocialMedia { Name = "WhatsApp", ID = 7 },
new SocialMedia { Name = "YouTube", ID = 8 }
};
}
}
public class SocialMedia
{
public string Name { get; set; }
public int ID { get; set; }
}The following image illustrates the result of the above code:

Load More button tapped event
The LoadMoreButtonTapped event fires when the user taps the Load More button. The event handler receives the ComboBox as sender and EventArgs as the event arguments. Use this event to load additional items into the bound collection.
<editors:SfComboBox x:Name="comboBox"
IsFilteringEnabled="True"
IsEditable="True"
MaximumSuggestion="2"
ItemsSource="{Binding SocialMedias}"
LoadMoreButtonTapped="OnComboBoxLoadMoreButtonTapped"
DisplayMemberPath="Name"
TextMemberPath="Name">
<editors:SfComboBox.BindingContext>
<local:SocialMediaViewModel />
</editors:SfComboBox.BindingContext>
</editors:SfComboBox>SocialMediaViewModel socialMediaViewModel = new SocialMediaViewModel();
SfComboBox comboBox = new SfComboBox
{
IsFilteringEnabled = true,
IsEditable = true,
MaximumSuggestion = 2,
ItemsSource = socialMediaViewModel.SocialMedias,
DisplayMemberPath = "Name",
TextMemberPath = "Name",
BindingContext = socialMediaViewModel,
};
comboBox.LoadMoreButtonTapped += OnComboBoxLoadMoreButtonTapped;
Content = comboBox;// ViewModel
public class SocialMediaViewModel
{
public ObservableCollection<SocialMedia> SocialMedias { get; set; }
public SocialMediaViewModel()
{
this.SocialMedias = new ObservableCollection<SocialMedia>
{
new SocialMedia { Name = "Facebook", ID = 0 },
new SocialMedia { Name = "Google Plus", ID = 1 },
new SocialMedia { Name = "Instagram", ID = 2 },
new SocialMedia { Name = "LinkedIn", ID = 3 },
new SocialMedia { Name = "Skype", ID = 4 },
new SocialMedia { Name = "Telegram", ID = 5 },
new SocialMedia { Name = "Twitter", ID = 6 },
new SocialMedia { Name = "WhatsApp", ID = 7 },
new SocialMedia { Name = "YouTube", ID = 8 }
};
}
}
public class SocialMedia
{
public string Name { get; set; }
public int ID { get; set; }
}The LoadMoreButtonTapped event can be handled in C# as follows:
private void OnComboBoxLoadMoreButtonTapped(object? sender, EventArgs e)
{
// Load additional items into the bound collection here.
}