Skip to content

FrancescoCrimi/CiccioSoft.Collections

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

70 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CiccioSoft.Collections Suite

NuGet License: MIT

Overview

CiccioSoft.Collections is a modern, modular suite of advanced generic collections for .NET, designed to support robust data-binding and change notification scenarios across multiple UI technologies.
Version 8.0.0 introduces a fully modular architecture, with dedicated packages for WinForms, XAML-based UIs (WPF, UWP, WinUI 3), and multi-UI backend scenarios.

The suite targets .NET 8, .NET 6, .NET Framework 4.7.2, and .NET Standard 2.0, ensuring maximum compatibility for both modern and legacy applications.


Packages

Package Description Recommended For
CiccioSoft.Collections.Binding Generic IBindingList implementations for IList<T> and ISet<T>. WinForms data-binding
CiccioSoft.Collections.Observable Observable generic collections implementing INotifyCollectionChanged and INotifyPropertyChanged. WPF, UWP, WinUI 3, and other XAML-based UIs
CiccioSoft.Collections.Ciccio Collections implementing both IBindingList and INotifyCollectionChanged for multi-UI backends. Shared backend for WinForms and XAML-based UIs
CiccioSoft.Collections.Core Core abstractions, utilities, and base classes for custom collections. Library authors, advanced scenarios
CiccioSoft.Collections Metapackage: Installs all core packages for compatibility with previous versions. Legacy/transition projects

Key Features

  • Generic IList and ISet implementations with advanced data-binding and change notification support
  • Observable collections for MVVM and reactive UI patterns
  • BindingList-like collections for WinForms
  • Multi-UI backend support: share collections between WinForms and XAML-based UIs
  • Extensible core for building your own custom collections
  • Full support for .NET 8, .NET 6, .NET Framework 4.7.2, and .NET Standard 2.0

Quick Start

Install the Metapackage (for legacy/compatibility)

dotnet add package CiccioSoft.Collections

Or install only what you need

  • WinForms:
    dotnet add package CiccioSoft.Collections.Binding
  • WPF/UWP/WinUI 3:
    dotnet add package CiccioSoft.Collections.Observable
  • Multi-UI backend:
    dotnet add package CiccioSoft.Collections.Ciccio

Example Usage

Observable Collection (WPF/UWP/WinUI 3)

using CiccioSoft.Collections.Observable;

var observableList = new ObservableList<MyModel>();
observableList.Add(new MyModel { Name = "Item 1" });
observableList.CollectionChanged += (s, e) => { /* React to changes */ };
myItemsControl.ItemsSource = observableList;

Binding Collection (WinForms)

using CiccioSoft.Collections.Binding;

var bindingList = new BindingListEx<MyModel>();
bindingList.Add(new MyModel { Name = "Item 1" });
myDataGridView.DataSource = bindingList;

Multi-UI Collection (Backend shared with WinForms and WPF)

using CiccioSoft.Collections.Ciccio;

var multiUiList = new MultiUiBindingList<MyModel>(); // Bind to both WinForms and WPF frontends

Documentation


License

This project is licensed under the MIT License.


Author

Francesco Crimi
GitHub


Contributing

Contributions, issues, and feature requests are welcome!
Feel free to open an issue or submit a pull request.


Acknowledgements

Inspired by the needs of modern .NET UI development and the desire for flexible, reusable, and robust collection types.

Packages

No packages published

Contributors 2

  •  
  •  

Languages