次の方法で共有


カスタム ビヘイビアーの作成

Behavior は、Trigger または Trigger のようなアイテムからの外部通知がなくても動作します。一定の条件を満たす必要はありますが、必ずしも Trigger で呼び出される必要はありません。

単純 Behavior

外部入力を必要としない Behavior の記述は、極めて容易です。以下に挙げるコード サンプルは、基本的な 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();
    }
}

Behavior のクラスを拡張し、Behavior に関連付ける種類を制限できます。

TriggersOnAttaching および OnDetaching メソッドの場合と同様、BehaviorOnAttached および OnDetaching メソッドで Behaviors とオブジェクトが関連付けられている場合、またはその関連付けが解除されている場合に、実行したい任意のコードを追加することができます。

ビヘイビアーとコマンド

ビヘイビアーの機能のカスタマイズ権限をユーザーに付与するひとつの方法は、Behavior のアクションに対応する Commands (タイプ ICommand のあらゆるプロパティ) を公開することです。まずは、プロジェクトに Microsoft.Expression.Interactions および System.Windows.Interactivity の両方の DLL 参照があることを確認します。次に、新規の Class ファイルを作成し、次のコードを追加します。

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

以下の図は、CommandsBehaviors が連携して、Action のような機能を実現する方法について説明します。

Using Behaviors with Commands

上の図にあるとおり、BehaviorCommands を公開します。既存の TriggersActions のパターンを使用して、BehaviorTriggers を追加し、その Triggers に 1 つ以上の InvokeCommandActions を起動させることで、このような Commands を呼び出すことができます。InvokeCommandAction が唯一実行するアクションは、Behavior で公開された Command を呼び出すだけです。

関連項目

概念

カスタムのトリガーとアクションの作成