가. 컨트롤 패턴 종류

UI 자동화 기술에서는 컨트롤을 사용할 수 있는 독립적인 기능들을 컨트롤 패턴으로 정의하였습니다. 서로 다른 컨트롤이 같은 기능을 제공하는 경우도 있기 때문에 컨트롤과 컨트롤 패턴은 1:1 매핑 관계가 아닙니다. 하나의 컨트롤이 여러 컨트롤 패턴에 해당할 수도 있고 컨트롤 상태에 따라 같은 종류의 컨트롤이지만 컨트롤 패턴은 다를 수 있습니다.

예를 들어 편집 창의 내용이 많아 자동으로 스크롤 바가 생기면 해당 편집 창은 스크롤 패턴에 해당합니다. 하지만 편집 창의 내용이 적어 스크롤 바가 생기지 않으면 스크롤 패턴에 해당하지 않습니다. 이처럼 컨트롤은 상태에 따라 특정 컨트롤 패턴일 수도 있고 아닐 수도 있습니다. 이러한 특징을 동적 컨트롤 패턴이라 부릅니다.

여러분이 사용자 정의 컨트롤을 제작할 때 특정 컨트롤 패턴을 지원하기를 원한다면 각 컨트롤 패턴의 기능을 약속한 인터페이스를 기반으로 구현해야 합니다.

예를 들어 여러분이 정의하는 컨트롤이 스크롤 기능을 지원한다면 IScrollProvider 인터페이스를 기반으로 구현하면 UI 자동화 평가 도구나 UI 자동화 기술 클라이언트 응용에서는 해당 컨트롤이 스크롤 패턴임을 인지할 수 있고 프로그램 방식으로 해당 컨트롤을 제어할 수 있게 됩니다.

다음은 UI 자동화 기술에서 제공하는 컨트롤 패턴입니다.

컨트롤 패턴설명
DockPattern도킹 컨테이너에 도킹할 수 있는 컨트롤
ExpandCollapsePattern확장하거나 축소할 수 있는 컨트롤
GridPattern표 기능을 지원하는 컨트롤
GridItemPattern표 안에 있는 컨트롤
InvokePattern버튼처럼 호출할 수 있는 컨트롤
MultipleViewPattern같은 정보를 여러 표현으로 전환할 수 있는 컨트롤
RangeValuePattern특정 범위의 값을 지정할 수 있는 컨트롤
ScrollPattern스크롤할 수 있는 컨트롤
ScrollItemPattern스크롤할 수 있는 컨트롤의 항목 컨트롤
SelectionPattern항목을 선택할 수 있는 컨트롤
SelectionItemPattern항목을 선택할 수 있는 컨트롤의 항목 컨트롤
TablePattern테이블 컨트롤
TableItemPattern테이블 컨트롤의 항목 컨트롤
TextPattern텍스트 정보를 갖을 수 있는 컨트롤
TogglePattern상태를 전환할 수 있는 컨트롤
TransformPattern크기 조정, 이동, 회전할 수 있는 컨트롤
ValuePattern값을 가져오거나 설정할 수 있는 컨트롤
WindowPattern창 컨트롤

[표 5.1] 컨트롤 패턴 종류

다음은 컨트롤 종류에 따라 UI 자동화 기술에서 제공하는 컨트롤 패턴과 상태에 따라 지원하는 패턴을 정리한 것입니다.

컨트롤지원 패턴상태에 따라 지원하는 패턴
Button없음Invoke, Toggle, ExpandCollapse
CalendarGrid, TableSelection, Scroll
CheckBoxToggle없음
ComboBoxExpandCollapseSelection, Value
DataGridGridScroll, Selection, Table
DataItemSelectionItemExpandCollapse, GridItem, ScrollItem,Table, Toggle, Value
DucumentTextScroll, Value
Edit없음Text, RangeValue, Value
Group없음ExpandCollapse
Header없음Transform
HeaderItem없음Transform, Invoke
HyperLinkInvokeValue
Image없음GridItem, TableItem
List없음Grid, MultipleView, Scroll, Selection
ListItemSelectionItemExpandCollapse, GridItem, Invoke,ScrollItem, Toggle, Value
Menu없음없음
MenuBar없음ExpandCollapse, Dock, Tansform
MenuItem없음ExpandCollapse, Invoke, SelectionItem,Toggle
Pane없음Dock, Scroll, Transform
ProgressBar없음RangeValue, Value
RadioButtonSlectionItem없음
ScrollBar없음RangeValue
Separator없음없음
Slider없음RangeValue, Selection, Value
Spinner없음RangeValue, Selection, Value
SplitButtonInvoke, ExpandCollapse없음
StatusBar없음Grid
TabSelectionScroll
TabItemSelectionItem없음
TableGrid, GridItem, Table,TableItem없음
Text없음GridItem, TableItem, Text
ThumbTransform없음
TitleBar없음없음
ToolBar없음Dock, ExpandCollapse, Transform
ToolTip없음Text, Window
Tree없음Scroll, Selection
TreeItemExpandCollapseInvoke, ScrollItem, SelectionItem,Toggle
WindowTransform, WindowDock

[표 5.2] 컨트롤 별 지원 패턴