Création de comportements personnalisés (Kit de développement logiciel Blend pour WPF)

Un Behavior peut se manifester sans notification externe provenant d’un élément Trigger ou de type Trigger. Bien que certaines conditions doivent être remplies, il ne doit pas nécessairement être appelé par un Trigger.

Comportements simples

La création d’un Behavior ne nécessitant aucune entrée externe est relativement simple. L’exemple de code suivant illustre un Behavior de ligne de base :

public class MyBehavior : Behavior<DependencyObject>
{
    public MyBehavior()
    {

    }

    protected override void OnAttached()
    {
        base.OnAttached();

        // Insert code that you want to run when the Behavior is attached to an object.
    }

    protected override void OnDetaching()
    {
        base.OnDetaching();
    }
}

Étendez la classe Behavior et limitez-la au type que vous souhaitez associer au Comportement.

Tout comme vous pouvez le faire avec les méthodes OnAttaching et OnDetaching pour les Triggers, vous pouvez insérer un code quelconque à exécuter lorsque le Behavior est soit associé à un objet, soit dissocié de l’objet auquel il est actuellement associé dans les méthodes OnAttached et OnDetaching pour les Behaviors.

Comportements avec commandes

Un moyen de permettre aux utilisateurs de personnaliser la fonctionnalité d’un Comportement consiste à exposer des Commands (toute propriété de type ICommand), chacune correspondant à une action pouvant être exécutée par le Behavior. Assurez-vous en premier lieu que votre projet possède une référence à la bibliothèque de contrôles Microsoft.Expression.Interactions ainsi qu’à System.Windows.Interactivity. Créez ensuite un nouveau fichier de Class, puis ajoutez-y le code suivant :

public class BehaviorWithCommand : Behavior<DependencyObject>
{
    public BehaviorWithCommand()
    {
        this.MyCommand = new ActionCommand(this.MyFunction);
    }

    protected override void OnAttached()
    {
        base.OnAttached();
    }

    protected override void OnDetaching()
    {
        base.OnDetaching();
    }

    public ICommand MyCommand
    {
        get;
        private set;
    }
     
    private void MyFunction()
    {
        // Code to execute when your Command is called
    }
}

Le diagramme suivant vous montre comment les Commands et les Behaviors s’associent pour vous offrir des fonctions de type Action :

Utilisation de comportements avec commandes

Comme l’indique le diagramme précédent, un Behavior expose des Commands. Vous pouvez utiliser le modèle Triggers/Actions existant pour appeler ces Commands en ajoutant des Triggers au Behavior et en faisant en sorte que ces Triggers déclenchent une ou plusieurs InvokeCommandActions. InvokeCommandAction ne fait qu’une seule chose : il appelle une Command exposée sur un Behavior.

Voir aussi

Concepts

Création de déclencheurs et d’actions personnalisés (Kit de développement logiciel Blend pour WPF)