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 알 수 없는 사용자
Tech/Silverlight2009. 10. 1. 16:50

  최근 ViewModel관련 Pattern에 대한 관심이 급증하고 있는데, 그 이유는 Silverlight와 WPF에서 제공하고 있는 데이터 바인딩의 장점을 적극 활용할 수 있기 때문이다.
  MVVM Pattern과 Command Pattern에 대해 Silverlight/WPF 개발을 하는데 내가 이해한 대로만 짧은 개념을 여기에 적는다.
 

  MVVM(Model-View-ViewModel) Pattern은 사용자 인터페이스에 최적화된 맞춤형 Model을 만들 수 있다.

 

이름

기능 설명

Model/
DataModel

Metadata의 정보들을 갖고 있다.

View

사용자 인터페이스, UI 요소들로 이루어져 있으며 오로지 UI 요소에게만 관심이 있으며, 그 이하 동작 과정에 관심이 없다.

ViewModel

View에 보여지거나 필요한 정보들을 갖고 있으며, View에게서 request가 들어오면 해당 동작을 수행한다.

 
  Model/DataModel은 Parser와 같은 역할을 하여 metadata들을 갖고 있고 metadata는 필요(사용자의 Request)에 따라 service될 것이다.
사용자의 Request가 View를 통해 접수되면, ViewModel이 Request에 적합한 동작을 수행하고, 그 동작에 필요한 데이터 정보는 Model/DataModel로부터 얻는다.


 
자, 그렇다면 Command Pattern은 왜 필요할까? Command Pattern은
ViewModelView Request를 받아 동작을 수행하는 과정에적용시킨다. Command Pattern은 각종 Request들에 반응하는 Action들을 개별로 캡슐화시킬 수 있기 때문에, 재활용성이 용이하며 View와 ViewModel을 분리시키는데 한 몫을 한다.



  자세한 설명은 밑에 Nikhilk과, 길버트라는 분들이 자세히 설명과 적용 사례까지 적어 놓았으니 참조하면 좋겠다.


참조 링크

http://www.nikhilk.net/Silverlight-ViewModel-Pattern.aspx

http://error1001.com/36

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

[Sketch Flow를 만들자]  (0) 2009.10.06
[Behavior 만들기]  (0) 2009.10.01
Deep Zoom Composer 에서 개별 이미지 요소 정보 얻기  (0) 2009.08.03
Silverlight 3 _ 3D  (0) 2009.06.18
Posted by 알 수 없는 사용자