Introduction aux Événements et Paramètres avec Caliburn.Micro

Dans ce tutoriel, nous explorerons les méthodes avancées de liaison d'événements et la spécification de paramètres d'événement dans Caliburn.Micro. En appliquant ces fonctionnalités, nous étendrons l'application créée dans les tutoriels précédents.

Comme vous vous souvenez peut-être, nous avons utilisé la correspondance automatique des noms de contrôles fournie par Caliburn.Micro pour lier les événements. Il suffisait de définir le nom d'un bouton dans la Vue et d'ajouter une méthode correspondante dans le ViewModel avec le même nom. Le clic sur le bouton était automatiquement connecté à l'appel de la méthode appropriée. Cependant, parfois, vous devez connecter explicitement les événements. Pour fournir des paramètres d'événement ou spécifier quels événements utiliser, Caliburn Micro propose deux approches : une syntaxe longue et une syntaxe courte.

  1. Syntaxe Longue

La meilleure approche est de modifier l'application existante pour utiliser la syntaxe longue sans changer le comportement actuel. Ouvrez le fichier AppView.xaml et ajoutez ces espaces de noms :

xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
xmlns:cal="http://www.caliburnproject.org"

Ensuite, modifiez le bouton repeat comme suit :

<repeatbutton content="Haut" margin="15" verticalalignment="Top">
  <interaction.triggers>
    <eventtrigger eventname="Click">
      <actionmessage methodname="AugmenterValeur"></actionmessage>
    </eventtrigger>
  </interaction.triggers>
</repeatbutton>

Lorsque vous exécutez l'application, vous verrez qu'elle se comporte comme avant. Nous avons utilisé la méthode de déclenchement d'interaction des déclencheurs dans System.Windows.Interactivity. Avec EventTrigger, nous pouvons spécifier quel événement nous voulons écouter, et avec ActionMessage de Caliburn Micro, nous pouvons spécifier quelle méthode doit être appelée. Cette méthode permet d'écouter plusieurs événements sur le même contrôle.

  1. Gestion des Paramètres d'Événement

Ajoutons un bouton qui augmente la valeur de 2. Dans AppViewModel, nous devons modifier la méthode AugmenterValeur pour inclure un paramètre entier. Cette méthode ressemblera à ceci :

public void AugmenterValeur(int increment)
{
   ValeurCompteur += increment;
}

Retournez dans AppView et mettez à jour le bouton repeat existant en ajoutant un paramètre à ActionMessage :

<actionmessage methodname="AugmenterValeur">
  <parameter value="1"></parameter>
</actionmessage>

Lorsque le bouton est pressé, il transmet la valeur comme paramètre à la méthode AugmenterValeur. Ajoutez un autre bouton à l'application avec un paramètre de 2 et exécutez l'application. En cliquent sur différents boutons, la valeur du compteur augmentera selon leurs paramètres respectifs.

3. Syntaxe Courte

Apprenons maintenant à utiliser la syntaxe courte pour obtenir les mêmes résultats. Modifions l'application sans la syntaxe longue précédente. Ajoutez simplement l'espace de noms Caliburn Micro et modifiez le bouton RepeatButton comme suit :

<repeatbutton cal:message.attach="[Event Click] = [Action AugmenterValeur]" content="Haut" margin="15" verticalalignment="Top"></repeatbutton>

Nous avons utilisé la propriété jointe Caliburn Micro (Message.Attach) pour spécifier l'événement qui nous intéresse et la méthode à appeler.

Pour utiliser des paramètres avec la syntaxe courte, modifiez la méthode AugmenterValeur comme avant. Ajoutez le paramètre dans la syntaxe de message :

cal:Message.Attach="[Event Click] = [Action AugmenterValeur(1)]"

Les paramètres d'événement sont écrits entre crochets après le nom de la méthode. Vous pouvez facilement ajouter un bouton qui augmente la valeur de 2 à chaque clic.

4. Liaison de Données avec la Syntaxe Courte

La syntaxe courte prend même en charge une forme spéciale de liaison de données. Ajoutons un bouton qui double la valeur du compteur. Le code du bouton ressemblera à ceci :

<repeatbutton cal:message.attach="[Event Click] = [Action AugmenterValeur(ValeurCompteur.Text)]" content="Double" margin="15"></repeatbutton>

Ici, nous avons défini le paramètre comme ValeurCompteur.Text, lié à la propriété "Text" d'un TextBlock nommé "ValeurCompteur". Caliburn Micro convertit automatiquement la chaîne en entier. Caliburn Micro propose également une autre raccourci : il utilise automatiquement la propriété correspondante du contrôle si aucune propriété n'est spécifiée.

5. Recherceh Automatique de Paramètres

Caliburn Micro a un ensemble de conventions pour obtenir automatiquement les paramètres lorsque vous ne les définissez pas explicitement. Si vous ne spécifiez pas de paramètres, Caliburn Micro obtient automatiquement les noms des paramètres définis dans la signature de la méthode, puis tente de faire correspondre ces noms dans les contrôles utilisateur de la Vue (en ignorant la casse). Une fois qu'une correspondance est trouvée, la propriété appropriée du contrôle est utilisée pour fournir le paramètre.

Ajoutons un Slider nommé "Increment" et un Button nommé "AugmenterValeur" dans l'application. Lorsque le bouton est cliqué, la méthode AugmenterValeur sera appelée avec la valeur du Slider comme paramètre :

<uniformgrid columns="2" verticalalignment="Bottom">
  <slider margin="15" maximum="5" minimum="0" name="Increment"></slider>
  <button content="Augmenter" margin="15" name="AugmenterValeur"></button>
</uniformgrid>

6. Fonctionnalités Avancées

Caliburn Micro offre plusieurs fonctionnalités avancées pour la gestion des événements :

  • Définition des cibles d'action
  • Valeurs de paramètre spéciales pour la liaison de données
  • Propagation des actions (action bubbling)
  • Contrôle des actions avec paramètres

Vous trouveerz plus d'informations sur l'utilisation de Caliburn Micro pour la gestion des événements dans la documentation en ligne. Les exemples HelloExplicitAction, HelloParameters et BubblingAction sont de bonnes sources d'apprentissage.

Étiquettes: Caliburn.Micro MVVM WPF C# événements

Publié le 1 juin à 04h33