SimpleExpander
확장기(Expander)는 콘텐츠가 표시되는 축소 가능 창과 헤더가 있는 콘텐츠 컨트롤입니다. Microsoft Expression Blend에서는 Header 속성을 수정하여 확장기의 제목을 지정할 수 있습니다. 확장기를 두 번 클릭한 후 요소를 그려 확장기에 콘텐츠를 넣을 수 있습니다. 확장기에 여러 요소를 넣으려면 먼저 Grid나 Canvas 같은 레이아웃 패널을 추가해야 합니다. 기본적으로 확장기에도 텍스트가 표시되며, 확장기를 마우스 오른쪽 단추로 클릭한 다음 텍스트 편집을 클릭하여 텍스트를 편집할 수 있습니다. 아트보드에서 확장된 확장기를 보려면 개체 및 타임라인에서 확장기를 마우스 오른쪽 단추로 클릭한 다음 Expander 확장을 클릭합니다.
SimpleExpander 컨트롤의 아트보드 보기
컨트롤 템플릿 분석
SimpleExpander 컨트롤 템플릿은 다음 항목으로 구성됩니다.
Grid - 확장기 내에 여러 자식 요소를 넣는 데 필요한 레이아웃 패널입니다. 또한 Grid를 사용하면 응용 프로그램 UI(사용자 인터페이스) 디자이너가 템플릿에 더 많은 요소를 손쉽게 추가할 수 있습니다. Grid는 헤더를 나타내는 Border 영역과 콘텐츠를 나타내는 ExpandSite 영역의 두 영역으로 구분됩니다.
Border 요소 - 이 템플릿이 적용되는 확장기 컨트롤의 BorderThickness 속성에 템플릿 바인딩할 수 있는 BorderThickness 속성이 들어 있어서 사용됩니다.
ToggleButton 요소 - Border 요소 내에 포함되며 확장기를 확장하고 축소합니다.
ContentPresenter 요소 - Grid 요소 내에 포함되며 이 템플릿이 적용되는 확장기 컨트롤의 Header 속성에 자동으로 바인딩됩니다.
ExpandSite 영역 아래의 ContentPresenter - 이 템플릿이 적용되는 확장기의 Content 속성을 표시하는 데 사용됩니다. 확장기가 제대로 작동하려면 두 ContentPresenter 요소가 모두 있어야 합니다.
개체 보기: SimpleExpander 컨트롤의 기본 구성 요소(템플릿)
맨 위로 이동
속성 트리거 사용
컨트롤 템플릿의 속성 트리거는 컨트롤이 속성 변경에 응답하도록 하는 데 사용됩니다. 인터랙션 패널의 트리거 아래 항목을 클릭하여 트리거가 활성화될 때 변경되는 속성을 확인할 수 있습니다. 예를 들어 SimpleExpander 템플릿에서 IsExpanded 속성이 True가 되면 ExpandSite 영역이 표시됩니다.
맨 위로 이동
브러시 사용
SimpleExpander 템플릿에서는 SimpleStyles.xaml 리소스 사전의 다음과 같은 브러시 리소스가 사용됩니다.
Background 속성은 트리거가 활성화되지 않은 경우에는 LightBrush를, IsEnabled가 False인 경우에는 DisabledBackgroundBrush를 사용하여 설정됩니다.
BorderBrush 속성은 트리거가 활성화되지 않은 경우에는 NormalBorderBrush를, IsEnabled가 False인 경우에는 DisabledBorderBrush를 사용하여 설정됩니다.
Border 요소의 Background 속성은 트리거가 활성화되지 않은 경우 NormalBrush를 사용하여 설정됩니다.
ExpandSite 요소의 Background 속성은 트리거가 활성화되지 않은 경우 WindowBackgroundBrush를 사용하여 설정됩니다.
ExpandSite 요소의 BorderBrush 속성은 트리거가 활성화되지 않은 경우 SolidBorderBrush를 사용하여 설정됩니다.
Foreground 속성은 IsEnabled가 False인 경우 DisabledForegroundBrush를 사용하여 설정됩니다.
맨 위로 이동
모범 사례 및 디자인 지침
일반적으로 디자이너가 컨트롤에 시각적 요소를 더 추가할 수 있도록 하려면 템플릿의 루트로 Grid 컨트롤을 사용합니다. 기본적으로 Expression Blend에서는 Grid 컨트롤과 같은 레이아웃 패널을 찾아 활성화함으로써 아트보드에 추가되는 새 요소가 해당 레이아웃 패널의 자식 요소가 되도록 합니다.
확장기에는 ContentPresenter 요소가 두 개(하나는 헤더용이고 하나는 콘텐츠용) 있으므로 헤더의 ContentPresenter를 컨트롤의 클래스로 명시적으로 설정해야 합니다. 이렇게 하려면 템플릿의 Border 노드에서 ContentPresenter 요소의 ContentSource 속성을 Header로 설정합니다.
ToggleButton 요소에서는 ExpanderToggleButton이라는 별도의 템플릿을 사용합니다. 이 템플릿을 수정하려면 ToggleButton 요소를 마우스 오른쪽 단추로 클릭하고 컨트롤 구성 요소(템플릿) 편집을 가리킨 다음 템플릿 편집이나 복사본 편집을 클릭합니다. ToggleButton은 ToggleButton의 IsChecked와 확장기의 IsExpanded 간 바인딩을 통해 나머지 확장기에 연결됩니다. 이 속성을 제대로 업데이트하려면 이 바인딩을 유지해야 합니다. 양방향 바인딩을 사용하면 확장기를 프로그래밍 방식으로 확장할 수 있습니다.
기본적으로 ExpandSite 영역은 축소되어 있으며 트리거에 의해 표시됩니다. 트리거는 이름으로 ExpandSite 요소를 참조하므로 ExpandSite 요소를 변경하거나 바꾸는 경우에는 IsExpanded 트리거도 업데이트해야 합니다.
맨 위로 이동