반응형
의존 속성(Dependency Property)
오랫간만의 실버라이트 공부시간이 돌아왔네요.
이번엔 의존속성에 대해서 공부해 볼 시간입니다.
실버라이트는 기존의 CLR의 속성과 달리 여러가지 기능이 확장된 의존속성 시스템을 지원하고 있습니다.
실버라이트 속성은 기존의 닷넷에서 사용하던 속성이 매우 흡사하여 개발자들이 좀 더 쉽게 사용하도록 만들어 져있습니다.
이 의존속성이 만들어진 주된 이유는 속성의 값이 다른 외부적인 값에 의존해서 값이 결정되도록 하기 위함입니다.
이런 외부 적 값들에는 테마와 같은 시스템 속성들이 있으며, 데이터 바인딩, 애니메이션, 스토리보드, 리소스, 스타일과 같은 즉시 값이 변경되는 것들이 있습니다. 이런 의존속성은 또 다른 의존속성에 대해서 데이터 바인딩을 통해 연결되며 이렇게 연결된 의존속성은 값의 변경을 감지하여 자신의 값을 변화하게 됩니다.
의존 속성은 직접 사용하게 되는 속성의 이름은 기존 닷넷과 동일하지만, 실제 데이터를 담고 있는 필드는 DependencyProperty형으로 선언되며, 필드이름은 사용하게 될 속성이름에 접미사 "Property"를 붙이게 됩니다.
음 예를 들어서 좀 더 쉽게 알아볼까요?
IsStarted 의존속성을 구현한 예제코드입니다.
public static readonly DependencyProperty IsStartedProperty =
DependencyProperty.Register(
"IsStarted", typeof(Boolen),
typeof(MyCode), null
) ;
public bool IsStarted
{
get { return (bool)GetValue(IsStartedProperty);}
set { SetValue(IsStartedProperty, value);}
}
DependencyProperty.Register(
"IsStarted", typeof(Boolen),
typeof(MyCode), null
) ;
public bool IsStarted
{
get { return (bool)GetValue(IsStartedProperty);}
set { SetValue(IsStartedProperty, value);}
}
2번째 줄에서 Register 메소드를 통해 데이터를 담을 DependencyProperty형의 정적 읽기 전용 필드를 선언합니다.
get으로 1에서 선언한 IsStartedProperty 필드로부터 GetValue메소드를 사용하여 값을 반환한다.
set으로 IsStartedProperty 필드에 값을 저장한다.
의존 속성 사용
의존속성은 기존 CLR과 같습니다. CLR이 무엇인 진 아시죠 ? Common Language Runtime ... 기억안나신다면 다시 예전 공부하기 문서를 클릭하세요 !!
다음은 XAML 에서 속성을 설정하는 예제 코드입니다.
-사소해도 앞으론 직접 쳐보시길 바라며 그림으로 업로드하겠습니다.
어트리뷰트(속성)값을 설정하지만, 어트리뷰트 형태로 선언을 하게 되면, XAML 파서가 각 의존 속성의 형을 파악하여 값을 유효한 형으로 변환하게 됩니다.
의존속성 구현
본격적으로 의존 속성의 구현방법에 대해 알아볼께요. 다음은 Person이라는 사람을 나타내는 개체에 Name 의존 속성을 구현하는 간단한 예제입니다.
의존 속성 필드를 선언합니다.
먼저 DependencyProperty 형의 정적 읽기 전용 필드를 선언해줍니다. 필드이름은 실제 사용하게 될 속성의 이름인 접미사 "Property"를 붙입니다.
Register 메소드를 통해 DependencyProperty 클래스의 _customProperties 필드에 추가됩니다.
중간에 이어서 수정하도록 하겠습니다.
반응형
'옛글 > Silverlight' 카테고리의 다른 글
실버라이트 공부하기- 여섯째 시간(기본 컨트롤) (2) | 2010.10.29 |
---|---|
실버라이트 공부하기- 여섯째 시간(실버라이트 컨트롤 -1) (0) | 2010.10.28 |
실버라이트 4의 새로운 변화 컨퍼런스 (0) | 2010.10.28 |
Silverlight 실버라이트 같이 공부하기 - 네번째 시간(그래픽- path) (0) | 2010.10.28 |
실버라이트 IIS 로 띄우기 (0) | 2010.10.28 |