Catel alternatives and similar packages
Based on the "MVVM" category.
Alternatively, view Catel alternatives based on common mentions on social networks and blogs.
-
ReactiveUI
An advanced, composable, functional reactive model-view-viewmodel framework for all .NET platforms that is inspired by functional reactive programming. ReactiveUI allows you to abstract mutable state away from your user interfaces, express the idea around a feature in one readable place and improve the testability of your application. -
Prism
Prism is a framework for building loosely coupled, maintainable, and testable XAML applications in WPF, Xamarin Forms, and Uno / Win UI Applications.. -
MVVMCross
The .NET MVVM framework for cross-platform solutions, including Android, iOS, MacCatalyst, macOS, tvOS, WPF, WinUI -
Caliburn.Micro
A small, yet powerful framework, designed for building applications across all XAML platforms. Its strong support for MV* patterns will enable you to build your solution quickly, without the need to sacrifice code quality or testability. -
MVVM Light Toolkit
DISCONTINUED. The main purpose of the toolkit is to accelerate the creation and development of MVVM applications in Xamarin.Android, Xamarin.iOS, Xamarin.Forms, Windows 10 UWP, Windows Presentation Foundation (WPF), Silverlight, Windows Phone. -
Gemini
Gemini is an IDE framework similar in concept to the Visual Studio Shell. It uses AvalonDock and has an MVVM architecture based on Caliburn Micro. -
Stylet
A very lightweight but powerful ViewModel-First MVVM framework for WPF for .NET Framework and .NET Core, inspired by Caliburn.Micro. -
WPF Application Framework (WAF)
Win Application Framework (WAF) is a lightweight Framework that helps you to create well structured XAML Applications. -
FreshMvvm
FreshMvvm is a super light Mvvm Framework designed specifically for Xamarin.Forms. It's designed to be Easy, Simple and Flexible. -
MVVM Dialogs
Library simplifying the concept of opening dialogs from a view model when using MVVM in WPF -
DotNetProjects.WpfToolkit
wpf toolkit fork of the MS WPF Toolkit (https://wpf.codeplex.com/releases/view/40535) -
Smaragd
A platform-independent, lightweight library for developing .NET applications using the MVVM architecture -
Web-Atoms Core
Light weight feature rich UI Framework for JavaScript for Browser with Dependency Injection, Mocking and Unit Testing -
Okra App Framework
DISCONTINUED. An app centric MVVM framework for Windows 8.1 built with dependency injection in mind, including a full set of Visual Studio MVVM templates. -
MvvmMicro
A clean and lightweight MVVM framework for WPF, UWP and .NET Standard 2.0 inspired by MVVM Light Toolkit. -
UpdateControls
Update Controls does not require that you implement INotifyPropertyChanged or declare a DependencyProperty. It connects controls directly to CLR properties. This makes it perfect for the Model/View/ViewModel pattern.
CodeRabbit: AI Code Reviews for Developers

* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of Catel or a related project?
README
Catel
Name | Badge |
---|---|
Chat | |
Downloads | |
NuGet stable version | |
NuGet unstable version | |
MyGet unstable version | |
Open Collective |
Catel is an application development platform with the focus on MVVM (WPF, UWP, Xamarin.Android, Xamarin.iOS and Xamarin.Forms). The goal of Catel is to provide a complete set of modular functionality for Line of Business applications written in any .NET technology, from client to server.
Catel distinguishes itself by unique features to aid in the development of MVVM applications and server-side application development. Since Catel focuses on Line of Business applications, it provides professional support and excellent documentation which ensures a safe bet by professional companies and developers.
For documentation, please visit the documentation portal
Features and components
Below are a few features that are available in Catel.
Catel.Core
Catel.Core is the library you want to include in all your projects, whether you are writing a UI project or not. It contains lots of useful helper methods. The most important features are listed below:
- Argument validation (e.g.
Argument.IsNotNull(() => myArgument)
) - Caching
- Data (ModelBase, PropertyBag, Validation)
- IoC (ServiceLocator, TypeFactory)
- Logging (LogManager, Log, several log listeners)
- Messaging
- Reflection (same reflection API for every supported platform)
- Serialization (BinarySerializer, XmlSerializer and more)
- Weak references (WeakEventListener)
And more....
Catel.MVVM
Catel.MVVM is the library you want to include when you are writing a UI project (e.g. WPF, UWP, Xamarin) and you want to use the MVVM pattern. Catel is the only MVVM library that has context-aware view and view-model creation, which can be used to solve the nested user controls problem.
The most important features are listed below:
- Auditing
- Collections (FastObservableCollection)
- Commands (Command, TaskCommand, etc)
- Converters (tons of converters out of the box)
- Services
- CameraService
- LocationService
- MessageService
- NavigationService
- OpenFileService
- PleaseWaitService
- SaveFileService
- UIVisualizerService
- View models
- Automatic validation
- Automatic mappings from model to view model
- Views
- DataWindow
- UserControl
- Window
Example code
Models
This model has automatic change notifications and validation.
public class Person : ValidatableModelBase
{
public string FirstName { get; set; }
public string LastName { get; set; }
protected override void ValidateFields(List<IFieldValidationResult> validationResults)
{
if (string.IsNullOrWhitespace(FirstName))
{
validationResults.Add(FieldValidationResult.CreateError(nameof(FirstName), "First name is required"));
}
if (string.IsNullOrWhitespace(LastName))
{
validationResults.Add(FieldValidationResult.CreateError(nameof(LastName), "Last name is required"));
}
}
}
View models
This is a view model with:
- Automatic injection of the DataContext
- Automatic mapping of properties & validation from model => view model
public class PersonViewModel : ViewModelBase
{
public PersonViewModel(Person person)
{
Argument.IsNotNull(() => person);
Person = person;
}
[Model]
private Person Person { get; set; }
[ViewModelToModel]
public string FirstName { get; set; }
[ViewModelToModel]
public string LastName { get; set; }
}
How to contribute
Support on Open Collective
Please consider supporting Catel on Open Collective.
Translating
To add translations to Catel, the Multilingual App Toolkit (MAT) is required.
- Download the MAT Editor
- Open your specific language (or create it) in the
MultilingualResources
folder, e.g../src/Catel.MVVM/MultilingualResources/Catel.MVVM.nl.xlf
- Edit the xlf file and create a pull request (PR) with only this file
Building Catel
Prerequisites
Catel requires Visual Studio 2019 to compile successfully. You also need to ensure you have the following features installed:
Note that the .vsconfig
in the src root should notify about missing components when opening the solution.
- .NET desktop development
- Universal Windows Platform development
- Mobile development with .NET
- .NET Core cross-platform development
- Select the following components from Individual components
- Windows 10 SDK (10.0.16299.0)
- MSVC v141 and v142 (ARM, ARM64 and x64/x86)
- C++ ATL v141 and v142 (ARM, ARM64 and x86 & x64) build tools
- C++ MFC v141 and v142 (ARM, ARM64 and x86 & x64) build tools
- Latest Version of .NET Core 3.0 Preview SDK
- Ensure you enable Use previews of the .NET Core SDK under Tools -> Options -> Projects and Solutions -> .NET Core
Note that you should run these commands using powershell in the root of the repository.
Running a build
.\build.ps1 -target build
Running a build with unit tests
.\build.ps1 -target buildandtest
Running a build with local packages
Note that this assumes a local packages directory at C:\Source\_packages
, which can be added to the NuGet feeds:
[](doc/nuget_local_packages.png)
.\build.ps1 -target buildandpackagelocal
Apps using Catel
There are a lot of (both free & commercial) apps using Catel. This list provides a few examples that are built with Catel:
// todo: add wpf
// todo: add uwp
WPF components based on Catel
If you are planning on using WPF, there is a huge set (60+) of free open-source components available based on Catel. All these open source are developed by a company called WildGums (see https://www.wildgums.com) and provided to the community for free. The components are well maintained and being used in several commercial WPF applications.
For more information, see https://github.com/wildgums
Tools for Catel
- Analogy.LogViewer.CatelProject - Catel Log parser for Analogy Log Viewer.
Contributors
This project exists thanks to all the people who contribute. [[Contribute](CONTRIBUTING.md)].
Backers
Thank you to all our backers! ๐ [Become a backer]
Sponsors
Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [Become a sponsor]