Aquila.ComboBox.F10 1.0.2

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

Aquila.ComboBox User Guide

Library: Aquila.ComboBox Control: AquilaComboBox Author: Aswin Sadhasivam Company: Aquila Innovations


Table of Contents

  1. Introduction

  2. Installation

  3. Basic Usage

    • XAML
    • C#
  4. Core Features

    • SelectedIndex / SelectedItem / SelectedText
    • ItemsSource / ObservableCollection
    • Placeholder
    • MaxDropDownHeight
    • Tap outside to close
  5. Styling & Appearance

    • BorderColor
    • BackgroundColor
    • Font, TextColor, CornerRadius
  6. Search Functionality

    • IsSearchEnabled
    • Filtering behavior
  7. Animations

    • Open/Close smooth animation
  8. Events

    • SelectionChanged
  9. MVVM Binding

  10. Advanced Tips

  11. Sample Full Implementation

  12. Troubleshooting


1. Introduction

Aquila.ComboBox is a cross-platform MAUI ComboBox control designed to work seamlessly on Android, iOS, Windows, Mac Catalyst. It is:

  • Lightweight, reusable, and MVVM-friendly
  • Supports search, animations, and touch-safe overlays
  • Fully customizable through BindableProperties

2. Installation

Install via NuGet:

dotnet add package Aquila.ComboBox --version 1.0.0

Or via Visual Studio:

  • Right-click Dependencies → Manage NuGet Packages → Search Aquila.ComboBox → Install

3. Basic Usage

3.1 XAML

<ContentPage xmlns:aquila="clr-namespace:Aquila.UiTools.Controls;assembly=Aquila.UiTools">
    <StackLayout Padding="20">
        <aquila:AquilaComboBox
            x:Name="Combo"
            Placeholder="Select fruit"
            IsSearchEnabled="True"
            BorderColor="DarkGray"
            MaxDropDownHeight="250"/>
    </StackLayout>
</ContentPage>

3.2 C#

Combo.ItemsSource = new ObservableCollection<AquilaComboItem>
{
    new() { Id = 1, Text = "Apple" },
    new() { Id = 2, Text = "Banana" },
    new() { Id = 3, Text = "Mango" },
    new() { Id = 4, Text = "Orange" }
};

4. Core Features

Feature Description
SelectedIndex Index of currently selected item
SelectedItem Full AquilaComboItem object
SelectedText Text of selected item (displayed in placeholder)
ItemsSource ObservableCollection of AquilaComboItem objects
Placeholder Default text before selection
MaxDropDownHeight Limit dropdown height
Tap outside Automatically closes dropdown
Smooth animations Dropdown opens and closes with scale/fade transitions

5. Styling & Appearance

Bindable Properties for Styling

Property Type Default Description
BorderColor Color Gray Color of the dropdown border
BackgroundColor Color White Background color of the dropdown frame
Placeholder string "Select..." Placeholder text when no selection
MaxDropDownHeight double 200 Max height of dropdown list
Font & TextColor via Label in template — You can customize TextColor and FontSize inside AquilaComboItem if needed

Example:

<aquila:AquilaComboBox
    BorderColor="Blue"
    BackgroundColor="LightYellow"
    Placeholder="Choose an item"
    MaxDropDownHeight="300"/>

6. Search Functionality

  • Enable search via IsSearchEnabled="True"
  • Typing filters items in real-time, case-insensitive
  • Clears filter if search box is empty
<aquila:AquilaComboBox
    IsSearchEnabled="True"
    Placeholder="Search fruits"/>

C# Filtering Behavior:

// Typing in SearchBox automatically filters the list

7. Animations

  • Open animation: fades in + scales from 85% → 100%
  • Close animation: fades out + scales 100% → 85%
  • Smooth transitions enhance UX and prevent click-through bugs

No extra setup required; handled internally.


8. Events

SelectionChanged Event

Subscribe in XAML:

<aquila:AquilaComboBox SelectionChanged="Combo_SelectionChanged"/>

Or C#:

Combo.SelectionChanged += Combo_SelectionChanged;

Event Handler Example

private async void Combo_SelectionChanged(object sender, EventArgs e)
{
    var combo = (AquilaComboBox)sender;
    var selected = combo.SelectedItem as AquilaComboItem;

    await DisplayAlert("Selected",
        $"Id: {selected.Id}\nText: {selected.Text}\nIndex: {combo.SelectedIndex}",
        "OK");
}

9. MVVM Binding

Supports two-way binding with SelectedItem and SelectedIndex.

public class MainViewModel : INotifyPropertyChanged
{
    public ObservableCollection<AquilaComboItem> Fruits { get; set; }
    private AquilaComboItem _selectedFruit;
    public AquilaComboItem SelectedFruit
    {
        get => _selectedFruit;
        set { _selectedFruit = value; OnPropertyChanged(); }
    }

    public MainViewModel()
    {
        Fruits = new ObservableCollection<AquilaComboItem>
        {
            new() { Id = 1, Text = "Apple" },
            new() { Id = 2, Text = "Banana" }
        };
    }
}
<aquila:AquilaComboBox
    ItemsSource="{Binding Fruits}"
    SelectedItem="{Binding SelectedFruit, Mode=TwoWay}"
    Placeholder="Pick a fruit"/>

10. Advanced Tips

  • Overlay Layer: Prevents accidental clicks behind dropdown
  • Safe Open Delay: Ensures animation works correctly across platforms
  • ObservableCollection: Auto-refreshes UI when items are added/removed
  • MaxDropDownHeight: Useful for small screens to prevent overflow
  • Search: Always restores full dataset after clearing search

11. Full Example

<StackLayout Padding="20">
    <aquila:AquilaComboBox
        x:Name="Combo"
        Placeholder="Select fruit"
        BorderColor="DarkBlue"
        MaxDropDownHeight="250"
        IsSearchEnabled="True"
        SelectionChanged="Combo_SelectionChanged"/>
</StackLayout>
Combo.ItemsSource = new ObservableCollection<AquilaComboItem>
{
    new() { Id=1, Text="Apple" },
    new() { Id=2, Text="Banana" },
    new() { Id=3, Text="Mango" }
};

private async void Combo_SelectionChanged(object sender, EventArgs e)
{
    var combo = (AquilaComboBox)sender;
    var item = combo.SelectedItem as AquilaComboItem;

    await DisplayAlert("Selected", $"Id: {item.Id}\nText: {item.Text}", "OK");
}

12. Troubleshooting

Issue Solution
InitializeComponent not found Ensure XAML file build action = MauiXaml
Items not showing Verify ItemsSource is assigned after InitializeComponent()
Dropdown does not close Ensure TapGestureRecognizer is correctly attached to overlay
Search not filtering IsSearchEnabled must be True

Product Compatible and additional computed target framework versions.
.NET net10.0-android36.0 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.2 162 2/27/2026
1.0.1 128 2/27/2026
1.0.0 130 2/27/2026