The framework enables a clean architecture where the View, logic, and data are distinctly separated. This allows programmers and designers to work in parallel without interfering with each other, enabling teams to scale projects without descending into chaos.
-
$\color{#6aba7d}\large{\textbf{Aspid.MVVM}}$ supports four primary data binding modes between View and ViewModel: -
$\color{#6aba7d}\large{\textbf{OneWay}}$ – Automatically updates the View when the ViewModel changes. -
$\color{#6aba7d}\large{\textbf{TwoWay}}$ – Bidirectional synchronization between View and ViewModel. -
$\color{#6aba7d}\large{\textbf{OneTime}}$ – Sets the value once during initialization. -
$\color{#6aba7d}\large{\textbf{OneWayToSource}}$ – Updates the ViewModel when the View changes.
Binding modes can be easily specified:
- In the View: Directly via the Unity Inspector.
- In the ViewModel: Using attributes to restrict allowed binding modes.
With the built-in Source Generator, you can bind any data type:
- No need to inherit from specialized base classes.
- No wrappers or wrapped properties required.
- No boilerplate code, using attributes for configuration.
A power command mechanism:
- Supports up to four parameters — simply select the desired signature.
- The
[RelayCommand]
attribute transforms a regular method into a command withCanExecute
support.
A set of flexible, covariant observable collections:
ObservableList<T>
ObservableDictionary<TKey, TValue>
ObservableHasSet<T>
ObservableStack<T>
ObservableQueue<T>
Features:
- Easy synchronization between two dependent collections.
- Support for filtering and sorting without modifying the source collection.
A ready-to-use set of components for a quick start:
-
$\color{#6aba7d}\large{\textbf{Binders}}$ : Quickly connect to the desired component property. -
$\color{#6aba7d}\large{\textbf{Value Converters}}$ : Transform values for display without altering the ViewModel. -
$\color{#6aba7d}\large{\textbf{List Components}}$ : Including:-
$\color{#6aba7d}\large{\textbf{Virtualized List}}$ : Efficiently handles thousands of elements.
-
-
$\color{#6aba7d}\large{\textbf{Dynamic ViewModel}}$ : For simple structured data without writing a specialized ViewModel. -
$\color{#6aba7d}\large{\textbf{View Initialization Components}}$ : Initialize Views by ViewModel via the Unity Inspector, with support for popular DI frameworks: Zenject, VContainer.
- View and modify ViewModel state directly in the Unity Inspector, even for plain C# classes.
[BinderLog]
attribute for automatic logging of value changes.- Clear visual errors in the editor for incorrect bindings.
- No reflection in bindings.
- No boxing/unboxing when passing values.
- Minimized memory allocations.
The framework is easily extensible:
- Create custom binders, converters, components, and more.
- Extend the framework to suit project needs without modifying its core.
- PC, mobile devices, consoles.
- Create different Views for different platforms without changing the ViewModel or business logic.
- Simplify maintenance of complex UI and other presentations.
- Improve code structure, avoiding "spaghetti code" in large projects.
- Achieve an architecture suitable for testing and extension.
- Enable parallel work for designers and developers.
- Implement modular development and testing.
- Build scalable applications.
- Flexibility in adapting to changing requirements.
- Robust architecture.
- High performance.
This project is developed on a voluntary basis. If you find it useful, you can support its development financially. This helps allocate more time to improving and maintaining
You can donate via the following platforms:
Here are some helpful pages to quickly and easily get started with our product:
- Integration
- What is MVVM?
- Getting Started
- Overview - ViewModel
- Overview - Commands
- Overview - Binders
- Overview - View