Silverlight/Tips

Expression Blend에서 컨트롤 프로퍼티 분류하여 표시하기

길버트리 2010. 5. 21. 16:15


속성 찾아 삼만리

Expression Blend에서 실버라이트 컨트롤의 속성을 다루다보면 어찌다 많은 속성들이 있는지...
원하는 속성을 찾아 헤매게 됩니다. (찾기 힘든 속성은 검색을 이용하기도 하지요. ^^)

새 컨트롤이라도 만들게 되면, 그 컨트롤에 우리가 추가한 속성들은 기본적으로 맨 아래
Miscellaneous 파트로 추락하게 되지요. 보다 적당한 장소가 있다고 생각하는데도 말이죠.

이 글에서는 어떻게 하면 내가 만든 속성들을 Built-in 컨트롤들처럼 적당하게 분류해서 제공할 수 있는지에 대해
소개하겠습니다. 오래된 정보이지만 제 경우에도 매번 쓸 때마다 검색을 하게되어 그냥 포스트 하나 작성합니다.
한번 작성하면 제 기억에도 자알 남겠지요!


Expression Blend에서 속성을 잘 분류해서 보여주자

자! 우리가 개발하는 UserControl 또는 CustomControl에 Title이란 프로퍼티를 아래와 같이 추가했다고 가정합니다.
#region Title

public string Title
{
    get { return (string)GetValue(TitleProperty); }
    set { SetValue(TitleProperty, value); }
}

public static readonly DependencyProperty TitleProperty =
	    DependencyProperty.Register(
		  "Title",
		  typeof(string),
		  typeof(WindowChrome),
		  new PropertyMetadata("Application Name", OnTitlePropertyChanged));

private static void OnTitlePropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
    WindowChrome _WindowChrome = d as WindowChrome;
    if (_WindowChrome != null)
    {
	//TODO: Handle new value. 
    }
}

#endregion Title

나중에 Blend에서 이 Control의 속성을 수정하려고 할 때 Title이란 속성은
가장 아래쪽 Miscellaneous에 분류되어 있을 겁니다.

다른 카테고리로 이동시키거나 새 카테고리를 생성하고 싶으실 때에는
소스코드에서 해당 프로퍼티를 정의한 부분에 찾아가 다음과 같이 Category라는 Design-time Attribute를 추가해 주시면 됩니다.

만약 Title을 Common Properties라는 분류에 포함시키고 싶다면 아래와 같이 하시면 됩니다.
Description에는 Blend에서 마우스 포인터를 가져다 댔을 때 표시하고 싶은 툴팁 정보를 입력하시면 됩니다.
[Category("Common Properties"), Description("OOB Application Title")]
public string Title
{
    get { return (string)GetValue(TitleProperty); }
    set { SetValue(TitleProperty, value); }
}