Erstellen von benutzerdefinierten Verhalten (Blend SDK für WPF)

Ein Behavior kann ohne externe Benachrichtigung von einem Trigger oder einem Element, das einem Trigger ähnlich ist, reagieren. Wenn ein Verhalten aufgerufen werden soll, müssen zwar einige Bedingungen erfüllt sein, das Verhalten muss aber nicht unbedingt von einem Trigger aufgerufen werden.

Einfache Verhalten

Ein Behavior zu schreiben, das keine externe Eingabe benötigt, ist relativ einfach. Das folgende Codebeispiel zeigt ein Basis-Behavior:

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

Erweitern Sie die Behavior-Klasse und beschränken Sie die Klasse auf den Typ, mit dem das Verhalten verknüpft werden soll.

Wie bei den Methoden OnAttaching und OnDetaching für Triggers können Sie jeden Code, den Sie ausführen möchten, wenn das Behavior mit einem Objekt verknüpft oder von seinem derzeit verknüpften Objekt getrennt wird, in den Methoden OnAttached und OnDetaching für Behaviors platzieren.

Verhalten mit Befehlen

Eine Möglichkeit für Benutzer zum Anpassen der Funktionalität des Verhaltens besteht darin, Commands (beliebige Eigenschaften des Typs ICommand) verfügbar zu machen, von denen jeder einer Aktion entspricht, die das Behavior ausführen kann. Zunächst müssen Sie sicherstellen, dass das Projekt einen Verweis auf die DLLs "Microsoft.Expression.Interactions" und "System.Windows.Interactivity" enthält. Als Nächstes erstellen Sie eine neue Class-Datei und fügen folgenden Code hinzu:

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

Das folgende Diagramm zeigt im Überblick, wie Commands und Behaviors zusammenarbeiten, um Funktionen bereitzustellen, die einer Action ähnlich sind:

Uso de comportamientos con comandos

Wie im o. a. Diagramm zu sehen, stellt ein Behavior Commands zur Verfügung. Das vorhandene Muster von Triggers und Actions kann verwendet werden, um diese Commands aufzurufen, indem Sie dem Behavior Triggers hinzufügen, und diese Triggers einen oder mehrere InvokeCommandActions auslösen lassen. InvokeCommandAction hat nur eine Aufgabe: einen Command aufzurufen, um ihn für ein Behavior verfügbar zu machen.

Siehe auch

Konzepte

Erstellen von benutzerdefinierten Triggern und Aktionen (Blend SDK für WPF)