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 |
Calendar | Grid, Table | Selection, Scroll |
CheckBox | Toggle | 없음 |
ComboBox | ExpandCollapse | Selection, Value |
DataGrid | Grid | Scroll, Selection, Table |
DataItem | SelectionItem | ExpandCollapse, GridItem, ScrollItem,Table, Toggle, Value |
Ducument | Text | Scroll, Value |
Edit | 없음 | Text, RangeValue, Value |
Group | 없음 | ExpandCollapse |
Header | 없음 | Transform |
HeaderItem | 없음 | Transform, Invoke |
HyperLink | Invoke | Value |
Image | 없음 | GridItem, TableItem |
List | 없음 | Grid, MultipleView, Scroll, Selection |
ListItem | SelectionItem | ExpandCollapse, GridItem, Invoke,ScrollItem, Toggle, Value |
Menu | 없음 | 없음 |
MenuBar | 없음 | ExpandCollapse, Dock, Tansform |
MenuItem | 없음 | ExpandCollapse, Invoke, SelectionItem,Toggle |
Pane | 없음 | Dock, Scroll, Transform |
ProgressBar | 없음 | RangeValue, Value |
RadioButton | SlectionItem | 없음 |
ScrollBar | 없음 | RangeValue |
Separator | 없음 | 없음 |
Slider | 없음 | RangeValue, Selection, Value |
Spinner | 없음 | RangeValue, Selection, Value |
SplitButton | Invoke, ExpandCollapse | 없음 |
StatusBar | 없음 | Grid |
Tab | Selection | Scroll |
TabItem | SelectionItem | 없음 |
Table | Grid, GridItem, Table,TableItem | 없음 |
Text | 없음 | GridItem, TableItem, Text |
Thumb | Transform | 없음 |
TitleBar | 없음 | 없음 |
ToolBar | 없음 | Dock, ExpandCollapse, Transform |
ToolTip | 없음 | Text, Window |
Tree | 없음 | Scroll, Selection |
TreeItem | ExpandCollapse | Invoke, ScrollItem, SelectionItem,Toggle |
Window | Transform, Window | Dock |
[표 5.2] 컨트롤 별 지원 패턴