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" />
                    
Directory.Packages.props
<PackageReference Include="Aquila.MultiSelectComboBox" />
                    
Project file
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
                    
#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
                    
Install as a Cake Addin
#tool nuget:?package=Aquila.MultiSelectComboBox&version=1.0.3
                    
Install as a Cake Tool
# 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).

![Demo](docs/images/demo.gif)  
*(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"
<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
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 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.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.0.3 134 2/27/2026
1.0.2 115 2/27/2026
1.0.1 109 2/27/2026
1.0.0 117 2/27/2026