사용자 지정 Attached Property의 이해
Tutorial/WPF 2011/04/18 23:47 |이번 포스팅에서는 사용자 지정 Attached Property에 대해 이해와, 예제를 다룹니다.
1. 다른건 다 기본 내용을 쓰고싶은데, 이거 하나만 추가하고싶어,,
예를 들어서, ListBox에서 여러개를 선택가능하게 하되, 최대갯수를 제한하고 싶은 경우를 봅시다.
기본의 ListBox에서는 MultiSelect를 할수있게/없게 하는 기능은 있어도, 최대 갯수를 지정할 수는 없습니다.
이를 구현하는데 쉽게 생각할 수 있는 방법은 상속입니다. 부모의 기능은 그대로 사용하고 싶은데, 내것 하나만 추가됬으면 하는 경우 니까요
하지만, 이렇게 구현하게되면 하나의 프로퍼티 때매, 전체를상속 받아야 하며, 새로 구현한 아이만을 사용해서 구현하여야 합니다.
좀 더 효과적으로 구현할 수 있는 방법이 있까요?!
이번 포스팅에서 설명하고하 하는 사용자 지정 Attached property를 사용하면 됩니다.
우선
사용자 지정 Attached property를 설명하기 앞써, 사용자 지정을 뺀 Attached property에 대해 이야기 해봅시다.
2. Attached property란?
Attacted Property란 어떤 객체에서든지 설정할 수 있는 global한 속성입니다.
보통의 경우 부모요소에 포함된 값을 부모가 직접 지정할 수는 없고, 자식요소가 지정해야할 경우에 사용할 수 있도록 해줍니다.
그러기 위해서 global하게 구현이 되어 있고요.
먼가 말로 표현하니 어렵게 느껴지는데요, 평소에 많이 사용하던 Property로 예제를 보면 무릎을 탁 치시게 될꺼에요.
즉, 여기서 DockPanel.Dock속성은 부모인 DockPanel에서 정할 수 있는 것이 아니라,
DockPanel안에 포함되는 자식 요소에서 설정되어야 하기 때문에, DockPanel 클래스 안에서는 DockProeperty를 static Dependency Property로 만든 다음 GetDock과 SetDock Metheod를 public으로 제공합니다.
바로 이게 정의는 내가하나, 남들이 정의해서 써야할때-_-!! 사용하는 것이 Attached Property입니다.
평소에도 사용하시면서 보셨거죠?
자 , 그럼 본론으로 들어가 봅시다.
3. 사용자 지정 Attacted Property란?
위에서 구현하고자 했었던 ListBox에서 여러개를 선택가능하게 하되, 최대갯수를 제한하려고 해 봅시다.
바로 이 Attacted Property를 이용해서 말이지요.
다음과 같이 구현하면 됩니다.
사용자 정의 Atteched Property를 사용할 경우
* 10원 팁 : 아래와 같이 propa를 치게되면 인텔리센스가 적당히 atteched Property를 생성하는것을 도와줍니다.
4. 사용을 해보자.
xaml에서 그럼 실제로 구현한 내용을 적용해 봅시다.
* 별첨
어찌보면 extention method 와 비슷하다고 보실 수 있네요.
전체 예제는 아래에 첨부합니다.






WIT.WPF.Samples.GradientEditorSample.zip