다음을 통해 공유


사용자 지정 동작 만들기(Silverlight용 Blend SDK)

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를 연결하려는 형식으로 제한합니다.

Triggers에 대한 OnAttaching 및 OnDetaching 메서드처럼, Behavior를 개체와 연결하거나 Behaviors에 대한 OnAttached 및 OnDetaching 메서드에서 현재 연결된 개체와 Behavior를 분리할 때 실행할 코드를 입력할 수 있습니다.

명령 포함 Behavior

사용자가 Behavior의 기능을 사용자 정의할 수 있는 한 가지 방법은 Commands(ICommand 형식의 속성)을 노출하는 것입니다. 각 명령은 Behavior가 수행할 수 있는 작업에 해당합니다. 먼저, 프로젝트가 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
    }
}

다음 다이어그램은 Commands와 Behaviors가 함께 작동하여 Action과 같은 기능을 제공하는 방법을 개괄적으로 나타냅니다.

명령으로 동작 사용

이전 다이어그램에 나타난 대로 Behavior는 Commands를 노출합니다. Triggers 및 Actions 의 기존 패턴을 사용하면 Triggers를 Behavior에 추가하고 해당 Triggers가 하나 이상의 InvokeCommandActions를 발생시키도록 하여 이러한 Commands 을 호출할 수 있습니다. InvokeCommandAction은 한 가지 작업만 수행하는데, Behavior에서 노출되는 Command을 호출합니다.

참고 항목

개념

사용자 지정 트리거 및 작업 만들기(Silverlight용 Blend SDK)