1 Results for 'Trigger'

  1. 2009.04.05 Behavior를 실버라이트 2에서 사용하기 (5)

이 전 글에서 실버라이트 3에서 추가된 슈퍼 쿨한 기능 중 하나인 Behavior를 실버라이트 2에서도 구현할 수 있다고 살짝 언급했는데요, 어떻게 구현했는지 소개할께요. 소개에 앞서서 Behavior와 관련된 라이브러리 코드들은 모두 블렌드 3에 포함된 Microsoft.Expression.Interactivity 어셈블리를 리버스엔지니어링으로 카피한거에요. 사용시 참고하시길 바래요.

먼저 동작 완구 부터…http://shiverlight.net/sample/SilverlightInteractivity/


 

뭐어… 특별할 게 없어죠? 이 정도 기능이야 뚝딱뚝딱 코딩하면 10분도 안걸릴거에요. 그렇지만 여기 있는 모든 동작은 코딩이 단 한줄도 들어가지 않은 즉, 순수하게 XAML에서 Behavior와 Trigger만 사용한 거죠.

[샘플 코드]

그럼 구현 과정을 알아보죠.

1. Microsoft.Expression.Interactivity 어셈블리 복사

먼저 실버라이트 3 개발 머신에 블렌드 3를 설치하면 C:\Program Files (x86)\Microsoft Expression\Blend 3 Preview\Libraries\Silverlight 폴더에 Microsoft.Expression.Interactivity.dll 어셈블리가 있는데요, 이것이 바로 Behavior와 Trigger를 지원하기 위한 기반 클래스들을 담고 있죠. 이 파일을 실버라이트 2 개발 머신에 복사해두세요.

2. 리버스 엔지니어링

Microsoft.Expression.Interactivity 어셈블리를 Reflector등으로 까서 코드를 봅니다. 그리고 실버라이트 2 라이브러리 프로젝트를 하나 만들어서 거기에 옮기면 끝.

단, 여기에서 주의할 점이 있는데요, 블렌드의 희한한 이름 제한때문에 라이브러리 프로젝트의 이름은 반드시 Microsoft.Expression.Interactivity가 아닌 다른 이름을 써야 해요. 물론 코드에서 정의하는 네임스페이스의 이름은 아무거나 관계 없어요. 전 HugeFlow.Interactivity라는 이름을 붙여봤어요.

3. Behavior와 Action 만들기복사하기

Microsoft.Expression.Interactivity에는 Behavior와 Action을 위한 기반 클래스만 준비만 되어 있을 뿐, 실제로 동작하는 건 없어요. 제대로 동작하는지 확인하려면 만들어 줄 필요가 있는데요, Expression 갤러리에 보면 Microsoft의 Kirupa가 공개한 Sample Silverlight 3 Behaviors 라이브러리가 있어요. 당연히 이것은 실버라이트 3를 위해 만든 라이브러리이지만 Microsoft.Expression.Interactivity를 기반으로 하므로 우리가 리버스 엔지니어링 한 라이브러리와 호환이 돼요. 여튼 이 라이브러리를 다운 받아서 실버라이트 2 라이브러리 프로젝트로 만들어주면 준비는 끝.

4. 블렌드 3에서 테스트 프로젝트 만들기

이제 동작 완구에서 보이는 것처럼 코드를 짜기만 하면 되죠. 그렇지만 단순히 XAML로 이 모든 걸 작성하기엔 좀 귀찮은 생각이 들죠? 문법도 헤깔리고요. 당연히 XAML 디자인은 블렌드에서 하는 게 기본이에요. 그러나 블렌드2는 블렌드3처럼 Behavior나 Trigger와 관련된 기능을 지원하지 않아요. 그렇다면? 그냥 블렌드 3를 써서 디자인 하는거죠.

5. 블렌드 3에서 만들어진 XAML을 실버라이트 2 프로젝트로 복사하기

블렌드 3로 디자이너가 Behavior와 Action을 사용하여 이것저것 디자인한 후 만들어진 XAML을 그대로 실버라이트 2 프로젝트로 복사하세요. 그리고 XAML의 xmlns에서 Microsoft.Expression.Interaction 부분만 우리가 리버스 엔지니어링 한 라이브러리로 바꿔주면 끝.

하나하나 과정을 보일까 하다가 별로 중요한 작업은 아니라 결과물만 첨부했어요.

 

이렇게 만든 Interactivity 라이브러리의 장점으로는

  • 블렌드 3에서 Behavior와 Action 기능을 사용한 디자인을 그대로 복사하여 사용할 수 있다.
  • 블렌드 2에서도 디자인이 깨지지 않고 보인다.
  • 실버라이트 2 개발 환경에서도 아무 문제 없이 동작한다.
  • 실버라이트 2의 지저분한 코딩을 XAML로 수용할 수 있게 한다.
  • 가볍다. Interactivity 라이브러리의 용량은 겨우 36.5kb로 실제로 위의 샘플 애플리케이션의 XAP 파일은 33.3kb, 최적화하면 26.6kb밖에 안된다.

반면 물론 주의 할 점도 있어요.

  • 리버스 엔지니어링한 것으로 일단은 불법이다.
    (그렇지만 별로 문제 될 것 같지는 않습니다만… –_-)
  • 당연하지만 Behavior나 Action외의 ElementBinding이나 Effect와 같은 기능은 지원하지 않는다.

그 외엔 딱히 단점을 찾기 어렵네요^^

암튼, 실버라이트 3의 강화된 기능 중 일부는 이처럼 실버라이트 2에서 당장 사용할 수 있어요. 현업 개발자들은 실버라이트 3가 정식으로 릴리즈 될 때까지는 이런 방법을 적극적으로 활용하는 것도 좋을 거에요.

저작자 표시 동일 조건 변경 허락
신고
Posted by gongdo


티스토리 툴바