No description
Find a file
Frederik Engelhardt 6e1564593b
All checks were successful
Build / enforce-branch-policy (push) Successful in 6s
Build / build (push) Successful in 9m14s
Build / deploy (push) Has been skipped
Merge pull request 'test' (#8) from test into dev
Reviewed-on: #8
2026-01-28 23:41:53 +01:00
.config Adjust code for migration 2026-01-28 21:20:08 +01:00
.forgejo Adjust code for migration 2026-01-28 21:20:08 +01:00
Build Adjust code for migration 2026-01-28 21:20:08 +01:00
CodeStyle@89917d859b Adjust code for migration 2026-01-28 21:20:08 +01:00
Source Adjust code for migration 2026-01-28 21:20:08 +01:00
Test-UIs Adjust code for migration 2026-01-28 21:20:08 +01:00
Tests Adjust code for migration 2026-01-28 21:20:08 +01:00
.gitattributes Adjust code for migration 2026-01-28 21:20:08 +01:00
.gitignore Adjust code for migration 2026-01-28 21:20:08 +01:00
.gitmodules - Added self-hosted git submodule references. 2026-01-15 10:59:34 +01:00
.runsettings - Imported the source code. 2024-04-01 09:40:19 +02:00
build.cake Adjust code for migration 2026-01-28 21:20:08 +01:00
build.ps1 Adjust code for migration 2026-01-28 21:20:08 +01:00
build.sh Adjust code for migration 2026-01-28 21:20:08 +01:00
equadrat.Framework.Mvvm.Description.txt - Imported the source code. 2024-04-01 09:40:19 +02:00
equadrat.Framework.Mvvm.DotSettings - Imported the source code. 2024-04-01 09:40:19 +02:00
equadrat.Framework.Mvvm.License.md - Imported the source code. 2024-04-01 09:40:19 +02:00
equadrat.Framework.Mvvm.ReleaseNotes.md Adjust code for migration 2026-01-28 21:20:08 +01:00
equadrat.Framework.Mvvm.sln - Removed Xamarin support. 2025-06-21 13:51:50 +02:00
equadrat.Framework.Mvvm.sln.DotSettings - Imported the source code. 2024-04-01 09:40:19 +02:00
equadrat.Framework.Mvvm.stylecop.json - Imported the source code. 2024-04-01 09:40:19 +02:00
equadrat.Framework.Mvvm.Tags.txt - Imported the source code. 2024-04-01 09:40:19 +02:00
NuGet.config Adjust code for migration 2026-01-28 21:20:08 +01:00
project.build.props Adjust code for migration 2026-01-28 21:20:08 +01:00
project.info.build.props Adjust code for migration 2026-01-28 21:20:08 +01:00
README.md Adjust code for migration 2026-01-28 21:20:08 +01:00

equadrat Framework Mvvm

The idea of the equadrat Framework is to provide APIs to build applications with an architecture of highly decoupled components. Every single component, aspect or pattern is represented by interfaces. The framework provides a standard implementation for these but each type can be replaced by a custom implementation.

The framework is not about reimplementing components, but making them available using common interfaces.

Getting started

You can use most of the components by simply instantiating them. This is maybe the easiest way to evaluate the framework.

If you're using an IOC/DI container such as Microsoft Extensions DependencyInjection or if you want to use the built-in IOC framework, you can use the bootstrapper and bootstrapper modules to register the framework to the IOC.

Usage

public static void Main(string[] args)
{
    var builder = Host.CreateApplicationBuilder(args);

    // Use the module registry to register bootstrapper modules. Usually each assembly has its own bootstrapper module.
    // This will add their service declarations to the IServiceCollection.
    // This requires equadrat.Framework.Core.Microsoft.Extensions.Hosting NuGet package.
    builder.Services.RegisterBootstrapperModules(moduleRegistry => moduleRegistry.MvvmFramework().RegisterPlatformModule());

    // Declare other services as usual.
    // builder.Services.AddSingleton<...>(...);

    var app = builder.Build();

    // Optional: initialize all services declared by the registered bootstrapper modules. Calling this method is required for all environments which doesn't support IHostedService, such es browsers/webassembly.
    app.Services.InitBootstrapperModules();

    app.Run();
}

The only requirement for view models is to implement INotifyPropertyChanged.

The equadrat Mvvm framework works fine with other Mvvm frameworks such as CommunityToolkit.Mvvm.

Have a look at the example applications on equadrat.net and in the wiki.

Interesting components

This is a list of some (not all) components of the framework which might be interesting for you.

MVVM code generator

  • MvvmGeneratePropertyAttribute
    • Requires partial class
    • Requires MvvmViewModel base class
    • Use PropertyName & PropertyType to generate a property
    • Use DeclarationType to generate all properties of the specified type of interface

MVVM data container & helper

  • IMvvmDataContainerFactory
  • MvvmHelper

MVVM shell & navigation

  • IMvvmShellService
  • IMvvmNavigationService

MVVM views

  • IMvvmView
  • IMvvmViewFactory
  • IMvvmViewRegistry

MVVM view models

  • MvvmViewModel (optional to use)
    • Base implementation for view models
    • Event implementation
    • Creates a data container.

MVVM behaviors

  • MvvmViewModelPresenterBehavior
    • Creates the view for the assigned view model (context) of the current control.
  • MvvmViewModelProviderBehavior
    • Creates a view model and binds it to the control (context).
  • MvvmViewModelVisibilityBehavior
    • Synchronizes the view model "visibility" with the visibility of the current control.

Platforms

The MVVM implementation itself is platform agnostic, but there are supporting integrations for some major client GUI frameworks.

Compatibility

The plan is to keep the equadrat Framework compatible to these .net versions as long as possible.

.net version min max automated tests*
Core 3.1 ≥ 10.x yes
Standard 2.0 ≥ 2.1 no
Framework 4.6.2 ≥ 4.8.x no

*The automated tests run under Linux for .net Core 6.x and above.

Version scheme and breaking changes

Version change Scope
Major Overhaul of the project
Minor Some types have changed
Revision Fully backward compatible
Build Set in preview versions only

Additional documentation

You can find some guides regarding specific features on my website: www.equadrat.net

Feedback

You can contact me on my website: www.equadrat.net

License

Please respect the license and check equadrat.Framework.Mvvm.License.md before using the package.