Coder Social home page Coder Social logo

wushian / catel Goto Github PK

View Code? Open in Web Editor NEW

This project forked from catel/catel

0.0 1.0 0.0 43.95 MB

An application development platform

Home Page: https://www.catelproject.com

License: Other

C# 98.48% PowerShell 0.10% CoffeeScript 1.40% Batchfile 0.01% Smalltalk 0.01%

catel's Introduction

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; }
}

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

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]

catel's People

Contributors

afussit avatar alexfdezsauco avatar bertrandr avatar chrisisidora avatar cmurczek avatar danielkuehner avatar fxam avatar gautamsi avatar geertvanhorrik avatar greenkn1ght avatar hoschu avatar ikupriyanov avatar iselyakov avatar jdehaan avatar jensweller avatar jgoelten avatar lukekolodziej avatar marcinjahn avatar matthijskoopman avatar mattiaseppler avatar mennodeij avatar michu avatar miktor avatar mkhomutov avatar pascalgross avatar rajivhost avatar semihokur avatar sohodeveloper avatar szogun1987 avatar ziez avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.