Aquila.MultiSelectComboBox
1.0.3
dotnet add package Aquila.MultiSelectComboBox --version 1.0.3
NuGet\Install-Package Aquila.MultiSelectComboBox -Version 1.0.3
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Aquila.MultiSelectComboBox" Version="1.0.3" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Aquila.MultiSelectComboBox" Version="1.0.3" />
<PackageReference Include="Aquila.MultiSelectComboBox" />
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Aquila.MultiSelectComboBox --version 1.0.3
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: Aquila.MultiSelectComboBox, 1.0.3"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Aquila.MultiSelectComboBox@1.0.3
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Aquila.MultiSelectComboBox&version=1.0.3
#tool nuget:?package=Aquila.MultiSelectComboBox&version=1.0.3
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
# Aquila MultiSelectComboBox
**Modern multi-select combo box / dropdown for .NET MAUI**
with profile pictures, search, full-row selection, and support for large lists (5,000+ items).

*(add your real screenshot or animated GIF here)*
## Features
- Circular avatars / profile images
- Real-time search & filtering
- Tap anywhere on row to select/deselect
- Select All / Clear / OK buttons
- Customizable colors & appearance
- Optimized performance for thousands of items
- Two-way binding (`ObservableCollection`)
- Uses CommunityToolkit.Maui Popup
## Installation
1. Add the project reference to your MAUI app
2. Add namespace in XAML:
```xml
xmlns:controls="clr-namespace:Aquila.MultiSelectComboBox.Controls;assembly=Aquila.MultiSelectComboBox"
Quick Example
<controls:MultiSelectComboBoxControl
ItemsSource="{Binding Employees}"
SelectedItems="{Binding SelectedEmployees, Mode=TwoWay}"
DisplayMemberPath="FullName"
ImageMemberPath="PhotoUrl"
Placeholder="Select team members…"
SummaryFormat="{}{0} selected"
HeightRequest="56"
HorizontalOptions="FillAndExpand"
/* Recommended professional colors */
BoxBackgroundColor="#FFFFFF"
BoxTextColor="#1F2937"
PopupBackgroundColor="#F9FAFB"
ButtonBackgroundColor="#3B82F6"
ButtonTextColor="#FFFFFF"
CheckBoxColor="#3B82F6" />
See User Guide → for full documentation, properties, themes, troubleshooting and large-list tips.
Screenshots
(add 2–4 screenshots here – popup open, selected items, search active, dark mode if supported)
License
MIT
Made with ❤️ in Coimbatore
### USER_GUIDE.md (detailed user documentation)
```markdown
# Aquila MultiSelectComboBox – User Guide
**Version:** 1.0 (February 2026)
**Target:** .NET MAUI apps (Android, iOS, Windows, macOS)
## Table of Contents
1. [Overview](#overview)
2. [Installation](#installation)
3. [Basic Usage](#basic-usage)
4. [All Properties](#all-properties)
5. [Recommended Color Themes](#recommended-color-themes)
6. [Working with Images](#working-with-images)
7. [Large Lists (5,000+ items)](#large-lists-optimization)
8. [UX Features](#ux-features)
9. [Troubleshooting](#troubleshooting)
10. [Sample Models & ViewModels](#sample-code)
## Overview
A customizable, high-performance multi-select control that looks and behaves like a modern combo box with:
- Summary text when collapsed
- Popup with search, select-all, clear, and OK
- Support for images (URLs, local files, MAUI resources)
- Full row tap to toggle selection
- Good accessibility & touch targets
## Installation
### Step 1 – Add project reference
In your MAUI app → right-click Dependencies → Add Project Reference → select `Aquila.MultiSelectComboBox`
### Step 2 – Add XAML namespace
```xml
xmlns:controls="clr-namespace:Aquila.MultiSelectComboBox.Controls;assembly=Aquila.MultiSelectComboBox"
Step 3 – (Recommended) Add converters to App.xaml
<Application.Resources>
<conv:StringToImageSourceConverter x:Key="StringToImageSourceConverter" />
<conv:IsNotNullConverter x:Key="IsNotNullConverter" />
</Application.Resources>
Basic Usage
<controls:MultiSelectComboBoxControl
x:Name="MemberSelector"
ItemsSource="{Binding TeamMembers}"
SelectedItems="{Binding SelectedMembers, Mode=TwoWay}"
DisplayMemberPath="Name"
ImageMemberPath="AvatarUrl"
Placeholder="Select members…"
SummaryFormat="{}{0} member(s) selected"
HeightRequest="54"
HorizontalOptions="FillAndExpand" />
// ViewModel example
[ObservableProperty]
ObservableCollection<Member> teamMembers = new() { ... };
[ObservableProperty]
ObservableCollection<object> selectedMembers = new();
All Properties
| Property | Type | Default | Description |
|---|---|---|---|
ItemsSource |
IEnumerable<object> |
null | Data source |
SelectedItems |
ObservableCollection<object> |
new() | Two-way bound selected items |
Placeholder |
string |
"Select..." | Hint text |
SummaryFormat |
string |
"{0} items selected" | Format for count (use {} to escape {) |
DisplayMemberPath |
string? |
null | Property for text |
ImageMemberPath |
string? |
null | Property for image path/URL |
BoxBackgroundColor |
Color |
White | Closed box background |
BoxTextColor |
Color |
Black | Closed box text |
PopupBackgroundColor |
Color |
White | Popup container |
ButtonBackgroundColor |
Color |
LightGray | Buttons (Select All, Clear, OK) |
ButtonTextColor |
Color |
Black | Button text |
CheckBoxColor |
Color |
Blue | Checkbox accent |
Recommended Color Themes (2025–2026 professional look)
1. Modern Corporate Blue (most recommended)
BoxBackgroundColor="#FFFFFF"
BoxTextColor="#1F2937"
PopupBackgroundColor="#F9FAFB"
ButtonBackgroundColor="#3B82F6"
ButtonTextColor="#FFFFFF"
CheckBoxColor="#3B82F6"
2. Clean Neutral Gray
BoxBackgroundColor="#FFFFFF"
BoxTextColor="#111827"
PopupBackgroundColor="#F3F4F6"
ButtonBackgroundColor="#4B5563"
ButtonTextColor="#FFFFFF"
CheckBoxColor="#6366F1"
3. Slate + Teal (modern SaaS)
BoxBackgroundColor="#FFFFFF"
BoxTextColor="#0F172A"
PopupBackgroundColor="#F8FAFC"
ButtonBackgroundColor="#0EA5E9"
ButtonTextColor="#FFFFFF"
CheckBoxColor="#0EA5E9"
Working with Images
- Supply full URLs (
https://...) or MAUI resource names (avatar1.png) - Uses
StringToImageSourceConverter→ handles both - Circular clipping is built-in (48×48 dp recommended)
Tip: Provide fallback image in your model:
public string AvatarUrl => string.IsNullOrEmpty(_avatar) ? "default_user.png" : _avatar;
Large Lists (5,000+ items) – Optimization Notes
- Popup opens immediately (loading is async)
- Full list is cached once → search is fast
- Avoid unnecessary bindings inside DataTemplate
- If still slow → consider debouncing search (can be added later)
UX Features
- Tap row (photo + name + checkbox area) → toggles selection
- Checkbox is disabled (
IsEnabled=false) to prevent double events - Search filters in real-time
- Select All / Clear apply to all items (not just visible)
- Dismiss popup by tapping outside
Troubleshooting
| Problem | Solution |
|---|---|
x:Name="popup" not found |
Add x:Name="popup" to <ct:Popup> root |
| Buttons not found (CS0103) | Clean + Rebuild, delete bin/obj folders |
| Images not loading | Check converter namespace, resource build action |
| Slow initial popup | Use latest async LoadDataAsync version |
| Search laggy | Already optimized; report if > 5k items still slow |
Sample Models
public class Member
{
public string Name { get; set; } = "";
public string? AvatarUrl { get; set; }
}
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0-android36.0 is compatible. net10.0-windows10.0.19041 is compatible. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
net10.0-android36.0
- CommunityToolkit.Maui (>= 14.0.0)
- CommunityToolkit.Mvvm (>= 8.4.0)
- Microsoft.Maui.Controls (>= 10.0.41)
-
net10.0-windows10.0.19041
- CommunityToolkit.Maui (>= 14.0.0)
- CommunityToolkit.Mvvm (>= 8.4.0)
- Microsoft.Maui.Controls (>= 10.0.41)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.