사용자 지정 동작 만들기(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을 호출합니다.