All Projects → Catel → Catel

Catel / Catel

Licence: other
An application development platform

Projects that are alternatives of or similar to Catel

Mvvmcross
The .NET MVVM framework for cross-platform solutions, including Xamarin.iOS, Xamarin.Android, Windows and Mac.
Stars: ✭ 3,594 (+483.44%)
Mutual labels:  xamarin, uwp, mvvm, wpf
Reactiveproperty
ReactiveProperty provides MVVM and asynchronous support features under Reactive Extensions. Target framework is .NET Standard 2.0.
Stars: ✭ 603 (-2.11%)
Mutual labels:  xamarin, uwp, mvvm, wpf
Mvvmvalidation
Lightweight library that helps reduce boilerplate when implementing validation in XAML MVVM applications
Stars: ✭ 141 (-77.11%)
Mutual labels:  xamarin, uwp, mvvm, wpf
Xaml Code Experiences
A collection of the experiences I have collected during days of Xamarin and Wpf, while following the MVVM design pattern.
Stars: ✭ 114 (-81.49%)
Mutual labels:  xamarin, mvvm, mvvm-architecture, wpf
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.
Stars: ✭ 6,709 (+989.12%)
Mutual labels:  xamarin, uwp, mvvm, wpf
Reactivemvvm
Cross-platform ReactiveUI sample app built for a talk at MSK .NET conf.
Stars: ✭ 94 (-84.74%)
Mutual labels:  xamarin, uwp, mvvm, wpf
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.
Stars: ✭ 2,404 (+290.26%)
Mutual labels:  xamarin, uwp, mvvm, wpf
Mvvmlight
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.
Stars: ✭ 973 (+57.95%)
Mutual labels:  xamarin, uwp, mvvm, wpf
Waf
Win Application Framework (WAF) is a lightweight Framework that helps you to create well structured XAML Applications.
Stars: ✭ 539 (-12.5%)
Mutual labels:  xamarin, uwp, mvvm, wpf
Professionalcsharp7
Code samples for the book Professional C# 7 and .NET Core 2.0 (with updates for 2.1), Wrox Press
Stars: ✭ 403 (-34.58%)
Mutual labels:  xamarin, uwp, mvvm
Microsoft.maui.graphics
Stars: ✭ 160 (-74.03%)
Mutual labels:  xamarin, uwp, wpf
Windowscommunitytoolkit
The Windows Community Toolkit is a collection of helpers, extensions, and custom controls. It simplifies and demonstrates common developer tasks building UWP and .NET apps for Windows 10. The toolkit is part of the .NET Foundation.
Stars: ✭ 4,654 (+655.52%)
Mutual labels:  uwp, mvvm, wpf
Arcgis Toolkit Dotnet
Toolkit for ArcGIS Runtime SDK for .NET
Stars: ✭ 125 (-79.71%)
Mutual labels:  xamarin, uwp, wpf
Xamarin Demos
This repository contains the Syncfusion Xamarin UI control’s samples and the guide to use them.
Stars: ✭ 218 (-64.61%)
Mutual labels:  xamarin, uwp, mvvm
EBind
🔵 .NET Data Binding we deserve: concise, fast, feature-rich
Stars: ✭ 141 (-77.11%)
Mutual labels:  xamarin, uwp, wpf
DevOpsExamples
A repo to show you how to use a private NuGet feed, such as Telerik, to restore packages in Azure DevOps, GitHub Actions, GitLab CI and AppCenter.
Stars: ✭ 16 (-97.4%)
Mutual labels:  xamarin, uwp, wpf
Mvvm Dialogs
Framework simplifying the concept of opening dialogs from a view model when using MVVM in WPF or UWP
Stars: ✭ 335 (-45.62%)
Mutual labels:  uwp, mvvm, wpf
Arcgis Runtime Samples Dotnet
Sample code for ArcGIS Runtime SDK for .NET – UWP, WPF, Xamarin.Android, Xamarin.iOS, and Xamarin.Forms
Stars: ✭ 274 (-55.52%)
Mutual labels:  xamarin, uwp, wpf
Uno
Build Mobile, Desktop and WebAssembly apps with C# and XAML. Today. Open source and professionally supported.
Stars: ✭ 6,029 (+878.73%)
Mutual labels:  xamarin, uwp, mvvm
Xamarin Forms Gtk Movies Sample
The Movie DB Xamarin.Forms Sample
Stars: ✭ 83 (-86.53%)
Mutual labels:  xamarin, uwp, wpf

Catel

Name Badge
Chat Join the chat at https://gitter.im/catel/catel
Downloads NuGet downloads
NuGet stable version Version
NuGet unstable version Pre-release version
MyGet unstable version Pre-release version
Open Collective Backers on Open Collective Sponsors on 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.

  1. Download the MAT Editor
  2. Open your specific language (or create it) in the MultilingualResources folder, e.g. ./src/Catel.MVVM/MultilingualResources/Catel.MVVM.nl.xlf
  3. 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:

.\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

Contributors

This project exists thanks to all the people who contribute. [Contribute].

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]

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].