Ashish.Maui.Controls.MultiSelect 1.0.4

dotnet add package Ashish.Maui.Controls.MultiSelect --version 1.0.4
                    
NuGet\Install-Package Ashish.Maui.Controls.MultiSelect -Version 1.0.4
                    
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="Ashish.Maui.Controls.MultiSelect" Version="1.0.4" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Ashish.Maui.Controls.MultiSelect" Version="1.0.4" />
                    
Directory.Packages.props
<PackageReference Include="Ashish.Maui.Controls.MultiSelect" />
                    
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 Ashish.Maui.Controls.MultiSelect --version 1.0.4
                    
#r "nuget: Ashish.Maui.Controls.MultiSelect, 1.0.4"
                    
#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 Ashish.Maui.Controls.MultiSelect@1.0.4
                    
#: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=Ashish.Maui.Controls.MultiSelect&version=1.0.4
                    
Install as a Cake Addin
#tool nuget:?package=Ashish.Maui.Controls.MultiSelect&version=1.0.4
                    
Install as a Cake Tool

Ashish.Maui.Controls.MultiSelect

A reusable multi-select control for .NET MAUI applications.

The library provides a customizable multi-selection control with built-in search, select-all support, selected item chips, and MVVM-friendly APIs. It also includes helper classes that reduce the amount of boilerplate required when implementing multi-selection scenarios.

Features

  • Multi-selection support
  • Built-in search and filtering
  • Select All support
  • Selected item chips
  • Custom item templates
  • Custom empty view
  • MVVM-friendly
  • Helper base classes
  • Cross-platform (.NET MAUI)

Installation

Install the package from NuGet.

.NET CLI

dotnet add package Ashish.Maui.Controls.MultiSelect

Package Manager

Install-Package Ashish.Maui.Controls.MultiSelect

Visual Studio

Open Manage NuGet Packages, search for Ashish.Maui.Controls.MultiSelect, and install the latest version.


Getting Started

Register the library

Register the control during application startup.

using Ashish.Maui.Controls.MultiSelect;

public static class MauiProgram
{
    public static MauiApp CreateMauiApp()
    {
        var builder = MauiApp.CreateBuilder()
            .UseMauiApp<App>()
            .UseMultiSelect()
            .ConfigureFonts(fonts =>
            {
                fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular");
            });

        return builder.Build();
    }
}

Create a model

The easiest way to create selectable items is to inherit from SelectableModel.

using Ashish.Maui.Controls.MultiSelect;

public class Country : SelectableModel
{
    public override string Name { get; set; }

    public string Capital { get; set; }
}

SelectableModel already implements ISelectable and INotifyPropertyChanged, so you only need to add the properties required by your application.


Create a ViewModel

MultiSelectViewModel provides the common functionality required by the control.

using System.Collections.ObjectModel;
using Ashish.Maui.Controls.MultiSelect;

public class CountriesViewModel : MultiSelectViewModel
{
    private ObservableCollection<Country> _countries;

    public ObservableCollection<Country> Countries
    {
        get => _countries;
        set
        {
            _countries = value;
            ItemsSource = value;
            OnPropertyChanged();
        }
    }

    public CountriesViewModel()
    {
        Countries = new ObservableCollection<Country>
        {
            new() { Name = "United States" },
            new() { Name = "Canada" },
            new() { Name = "Germany" },
            new() { Name = "France" },
            new() { Name = "Japan" }
        };
    }
}

Use the control

<controls:MultiSelectListView
    ItemsSource="{Binding ItemsSource}"
    SelectedItems="{Binding SelectedItems}"
    AccentColor="Green">

    <controls:MultiSelectListView.ItemTemplate>

        <DataTemplate>

            <Grid Padding="12" ColumnDefinitions="Auto,*">

                <CheckBox
                    IsChecked="{Binding IsSelected}"
                    Color="Green"
                    VerticalOptions="Center"/>

                <Label
                    Grid.Column="1"
                    Margin="12,0,0,0"
                    Text="{Binding Name}"
                    VerticalOptions="Center"/>

            </Grid>

        </DataTemplate>

    </controls:MultiSelectListView.ItemTemplate>

</controls:MultiSelectListView>

Set the BindingContext

public partial class MainPage : ContentPage
{
    private readonly CountriesViewModel _viewModel = new();

    public MainPage()
    {
        InitializeComponent();
        BindingContext = _viewModel;
    }

    private void OnShowSelectionsClicked(object sender, EventArgs e)
    {
        ResultLabel.Text = _viewModel.ExportSelections();
    }
}
Product Compatible and additional computed target framework versions.
.NET net10.0-android36.0 is compatible.  net10.0-ios26.0 is compatible.  net10.0-maccatalyst26.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.4 126 7/23/2026
1.0.3 117 7/23/2026
1.0.2 115 7/23/2026
1.0.1 104 7/23/2026
1.0.0 118 7/23/2026