Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 6 Next »

This is a quick introduction for developers who don't have a lot of time to read all the docs. This document contains the absolute basics of what a developer needs to know.

Core

This pare contains the core functionality of Catel and what you should know when using Catel.

Catel properties

All properties in classes deriving from ModelBase (thus also ViewModelBase) require a special property definition.

Normally one would write something like this:

private string _firstName;
public string FirstName
{
	get { return _firstName; }
	set
	{
		RaisePropertyChanging("FirstName");
		_firstName = value;
		RaisePropertyChanged("FirstName");
	}
}

In Catel one should write this:

public string FirstName
{
    get { return GetValue< string>(FirstNameProperty); }
    set { SetValue(FirstNameProperty, value); }
}

public static readonly PropertyData FirstNameProperty = RegisterProperty("FirstName", typeof(string), null);

Catel will automatically take care of change notifications.

Note that you can use the dataprop or vmprop to easily create these properties using code snippets. You can also use Catel.Fody instead

MVVM

This part is especially meant for the MVVM part.

Handling of viewmodels

In other MVVM frameworks, you are obliged to set the data context of a view manually. It will look something like this:

var view = new PersonView();
view.DataContext = new PersonViewModel();

Catel automatically resolves the right view model based on the view. If a view is created, Catel automatically creates the view model:

var view = new PersonView();
// view model is automatically created

It goes even further. Catel can create view models based on the data context. For more information, read nested user controls.

Handling hierarchy and parent/child view models

Note that Catel is already fully aware of parent/child relations of view models so you don’t have to do anything for this yourself. For more information, read nested user controls.

Communication between view models

There are several methods available to communicate between view models. Just make sure that you never directly reference other view model and keep everything loosely coupled.

Resolving views and view models

Catel resolves views and view models by naming convention. This means that based on the name of a view, the view model can be determined. This also works the other way around where the view model can be determined based on the view. For more information, read about naming conventions.

  • No labels