Aquila.AppCore
1.0.7
dotnet add package Aquila.AppCore --version 1.0.7
NuGet\Install-Package Aquila.AppCore -Version 1.0.7
<PackageReference Include="Aquila.AppCore" Version="1.0.7" />
<PackageVersion Include="Aquila.AppCore" Version="1.0.7" />
<PackageReference Include="Aquila.AppCore" />
paket add Aquila.AppCore --version 1.0.7
#r "nuget: Aquila.AppCore, 1.0.7"
#:package Aquila.AppCore@1.0.7
#addin nuget:?package=Aquila.AppCore&version=1.0.7
#tool nuget:?package=Aquila.AppCore&version=1.0.7
Aquila.AppCore NuGet Package – README Package Name: Aquila.AppCore Overview Aquila.AppCore is a .NET MAUI application core framework designed to improve performance and user experience in data-heavy mobile applications. It provides:
Preloading of screens and data in the background Chunked loading for CollectionViews to handle thousands of items smoothly Automatic refresh and reload of pages without re-fetching all data Integration-ready MVVM structure using DI, without modifying the underlying AppCore services This package is ideal for apps that:
Load large lists (2,000–15,000+ items) Need fast navigation between screens Want loading indicators and smooth UX Key Features / Benefits Feature Description Benefit Screen Preloading Load data for multiple pages in the background while showing a loading page Reduces wait time when navigating between pages Chunked CollectionView Loading Only loads visible items + small buffer, with automatic load more on scroll Prevents app crashes or freezes with thousands of items Refresh & Reload Allows clearing user values and reloading data without restarting the app Instant refresh for billing, lists, or dashboards DI & MVVM Ready Works with existing Dependency Injection in MAUI Easy integration into any MAUI project Supports Images Preload and display images in CollectionView items Smooth UX for product or billing apps No AppCore Modification Required Fully works with pre-existing AppCore services Safe for production apps using AppCore Difference From Existing Method Current Approach Using Aquila.AppCore Screens load all data at once Screens preload in background, only showing initial chunk Navigation is slow for 2k+ items Navigation is instant, first items rendered immediately Refresh requires manual clearing or app restart Refresh can be triggered via command, preserving performance No built-in loading indicators LoadingPage with progress indicator included Data-heavy apps often crash or lag Smooth scrolling and memory-efficient loading for thousands of items Installation dotnet add package Aquila.AppCore Or via NuGet Package Manager:
Install-Package Aquila.AppCore Quick Start Example 1️⃣ Setup DI in MauiProgram.cs builder.Services.AddTransient<BillingViewModel>(); builder.Services.AddTransient<BillingPage>(); builder.Services.AddSingleton<LoadingPage>(); builder.Services.AddSingleton<App>(); 2️⃣ Define Your Page Models public class BillingItem { public string Name { get; set; } public decimal Amount { get; set; } public DateTime Date { get; set; } public string ImageUrl { get; set; } // optional image } 3️⃣ Use BillingViewModel public class BillingViewModel : INotifyPropertyChanged { public ObservableCollection<BillingItem> Items { get; } = new(); public bool IsLoading { get; set; } = true; public ICommand LoadMoreCommand { get; } public ICommand RefreshCommand { get; }
public BillingViewModel()
{
LoadMoreCommand = new Command(LoadMoreItems);
RefreshCommand = new Command(async () => await RefreshAsync());
Task.Run(async () => await PreloadAsync());
}
// Simulate preload
private Task<List<BillingItem>> LoadDataAsync()
{
var list = new List<BillingItem>();
string imageUrl = "https://thewhiskaddict.com/wp-content/uploads/2024/10/IMG_0979-scaled.jpg";
for (int i = 1; i <= 15000; i++)
list.Add(new BillingItem { Name=$"Item {i}", Amount=i*1.1m, Date=DateTime.Now.AddDays(-i), ImageUrl=imageUrl });
return Task.FromResult(list);
}
// Chunked loading
private void LoadMoreItems() { /* add next chunk to Items */ }
private async Task RefreshAsync() { /* reload items */ }
public event PropertyChangedEventHandler PropertyChanged;
} 4️⃣ XAML Page <CollectionView ItemsSource="{Binding Items}" RemainingItemsThreshold="10" RemainingItemsThresholdReachedCommand="{Binding LoadMoreCommand}"> <CollectionView.ItemTemplate> <DataTemplate> <Frame Padding="10" Margin="5" BorderColor="#ccc"> <StackLayout Orientation="Horizontal" Spacing="10"> <Image Source="{Binding ImageUrl}" WidthRequest="60" HeightRequest="60" Aspect="AspectFill"/> <VerticalStackLayout> <Label Text="{Binding Name}" FontAttributes="Bold"/> <Label Text="{Binding Amount, StringFormat='Amount: {0:C}'}"/> <Label Text="{Binding Date, StringFormat='Date: {0:dd-MM-yyyy}'}"/> </VerticalStackLayout> </StackLayout> </Frame> </DataTemplate> </CollectionView.ItemTemplate> </CollectionView> 5️⃣ Loading Page / Navigation public partial class LoadingPage : ContentPage { private readonly BillingPage _billingPage;
public LoadingPage(BillingPage billingPage)
{
InitializeComponent();
_billingPage = billingPage;
}
protected override async void OnAppearing()
{
base.OnAppearing();
await Task.Delay(500); // simulate preload
Application.Current.MainPage = new NavigationPage(_billingPage);
}
} ✅ Main Benefits Faster navigation between pages Handles thousands of items without crashing Preloading in background for instant UI Chunked CollectionView for smooth scrolling Supports images with minimal memory impact Refresh and reload without restarting the app Works out-of-the-box with AppCore
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net9.0-android35.0 is compatible. net9.0-windows10.0.19041 is compatible. net10.0-android was computed. net10.0-windows was computed. |
-
net9.0-android35.0
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.3)
- Microsoft.Maui.Controls (>= 9.0.120)
- System.Threading.Channels (>= 10.0.3)
-
net9.0-windows10.0.19041
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.3)
- Microsoft.Maui.Controls (>= 9.0.120)
- System.Threading.Channels (>= 10.0.3)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.