Présentation concise du framework MVVM Caliburn.Micro pour les applications XAML

Caliburn.Micro est un framework MVVM léger et efficace qui simplifie le développement sur diverses plateformes XAML telles que WPF, UWP et Xamarin.Forms.

Ressources utiles :
Site GitHub : https://github.com/Caliburn-Micro/Caliburn.Micro
Documentation : http://caliburnmicro.com/documentation/
Installation via NuGet : Install-Package Caliburn.Micro

Configuraton de base, actions et conventions

Commençons par la mise en place d'une application simple. Créez un nouveau projet WPF, puis ajoutez le package NuGet Caliburn.Micro et la référence à System.Windows.Interactivity.

Supprimez la fenêtre principale par défaut (MainWindow.xaml) et configurez l'initialisation de l'application dans App.xaml.cs comme suit :

public partial class App : Application
{
    public App()
    {
        InitializeComponent();
    }
}

}


</div>Le framework favorise une approche "ViewModel-First". Créons donc notre premier ViewModel nommé `MainScreenViewModel` :

<div>```
namespace MyAppCaliburn
{
    using System.Windows;
    using Caliburn.Micro;

    public class MainScreenViewModel : PropertyChangedBase
    {
        private string _userName;

        public string UserName
        {
            get => _userName;
            set
            {
                _userName = value;
                NotifyOfPropertyChange(nameof(UserName));
                NotifyOfPropertyChange(nameof(CanGreet));
            }
        }

        public bool CanGreet => !string.IsNullOrWhiteSpace(UserName);

        public void GreetUser()
        {
            MessageBox.Show($"Bonjour, {UserName}!");
        }
    }
}

Ensuite, nous définissons un bootstrapper qui servira de point d'entrée et de configuration pour le framework. Créez la classe AppBootstrapper :

public class AppBootstrapper : BootstrapperBase
{
    public AppBootstrapper()
    {
        Initialize();
    }

    protected override void OnStartup(object sender, StartupEventArgs e)
    {
        // Spécifie le ViewModel racine à afficher au démarrage.
        DisplayRootViewFor<MainScreenViewModel>();
    }
}

}


</div>Pour utiliser ce bootstrapper, modifiez le fichier `App.xaml` en le déclarant comme ressource et en supprimant la propriété `StartupUri` :

<div>```
<Application x:Class="MyAppCaliburn.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:local="clr-namespace:MyAppCaliburn">
    <Application.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary>
                    <local:AppBootstrapper x:Key="bootstrapper" />
                </ResourceDictionary>
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Application.Resources>
</Application>

De plus, les conventions de liaison simplifient le XAML : un contrôle dont le x:Name correspond à une propriété du ViewModel (ex: x:Name="UserName") y sera automatiquement lié. De même, un contrôle dont le x:Name correspond à une méthode (ex: x:Name="GreetUser") déclenchera cette méthode via un ActionMessage. Une propriété booléenne portant le préfixe Can (ex: CanGreet) contrôlera automatiquement l'état IsEnabled de l'élément lié à la méthode correspondante.

Étiquettes: Caliburn.Micro MVVM XAML WPF UWP

Publié le 5 juin à 22h35