Tech/Silverlight2009. 10. 1. 17:40

본 목적은 Sketch Flow를 만들어보자 였던 것 같은데; Sketch Flow에 애니메이션 적용이 필요하게 되어 뒤적뒤적하다보니 Behavior가 필요하게 되고~ 그러다보니 또 Behavior를 새로 만들어야 하는 필요성이 생기게 되어 "Behavior를 만들자"가 되었다.


... OTL (뭐 이래)

간단하게 Behavior는 세 분류로 나뉘는데, Behavior는 그냥 밑도 끝도 없이 Action을 한다. TriggerAction은 Trigger(입력되는 Event나 상황 조건)에 따라 Action을 한다. TargetedTriggerAction은 Trigger에 따라 TargetedObject가 Action을 하는 것을 의미한다.

Behavior를 만드는 방법을 굉장히 친절하게 설명해 놓은 글이 있으니 중복으로 쓰지 않고 링크를 남겨두도록 하겠다.

http://openlightgroup.net/Blog/tabid/58/EntryId/17/Creating-a-simple-Silverlight-3-Behavior.aspx


중요한 부분은 새로이 정의한 Behavior에 System.Windows.Interactivity.dll을 참조시키는 것이고 그 후에 SilverlightApp 프로젝트 쪽에 정의한 Behavior를 참조추가 하는 것이다. 이렇게 한 후에, 빌드하면 Blend를 띄웠을 때, Behavior 리스트에 새로이 정의한 Behavior가 잘~ 보일 것이다.


지금 나에게 필요한 Behavior는 TargetTriggerAction Behavior이며, 해당 Target의 Chidren들의 Rotation이 바뀌도록 해 주는 것이다.
TargetTriggerAction Behavior Class는 다음과 같이 정의한다.


1. TargetedTriggerAction을 상속받아 Invoke()를 오버라이드한다.

public class ChangeChildrenRotation : TargetedTriggerAction<Grid>
{
        protected override void Invoke(object parameter)
        {
            //수행 동작 내용
       
}

2. 동작을 수행하는데 필요한 데이터 정보를 받을 DependencyProperty를 정의한다.
ex) X축을 중심으로 회전할 각도를 받을 DependencyProperty를 정의한다.

public static readonly
DependencyProperty DeltaXProperty = DependencyProperty.Register(
"DeltaX", typeof(double), typeof(ChangeChildrenRotation), new PropertyMetadata(Double.Parse("0")));

3. Blend에서 DependencyProperty를 입력받을 수 있도록 해주고, Category로 분류시킨다.

[Category("Rotation")]
public bool RotateX
{
       get { return (bool)GetValue(RotateXProperty); 
       set { SetValue(RotateXProperty, value); }
}

끗.

참 잘했어요 ' ㅅ')/ 뿌우

'Tech > Silverlight' 카테고리의 다른 글

[Blend에서 Behvaior 사용해보기]  (0) 2009.10.09
[Sketch Flow를 만들자]  (0) 2009.10.06
[MVVM/Command Pattern]  (0) 2009.10.01
Deep Zoom Composer 에서 개별 이미지 요소 정보 얻기  (0) 2009.08.03
Posted by 알 수 없는 사용자