10) ScrollPattern, 11) ScrollItemPattern

10) ScrollPattern

스크롤 패턴은 자식 요소 컬렉션을 갖고 있을 때 스크롤 가능한 컨테이너 컨트롤 패턴이며 자식 요소는 ScrollItemPattern을 지원합니다.

System.Object
System.Windows.Automation.BasePattern
System.Windows.Automation.ScrollPattern

네임스페이스:  System.Windows.Automation
어셈블리:  UIAutomationClient(UIAutomationClient.dll)

ScroollPattern의 Current 및 Cached 속성으로 ScrollPatternInformation 구조체를 접근할 수 있습니다. 그리고 ScrollPatternInformation 구조체에는 수평, 수직 컨트롤 가능 여부와 스크롤 위치 및 뷰의 크기를 가져오기 할 수 있는 속성을 제공합니다.

속성명설명
HorizontallyScrollable수평 스크롤 가능 여부
HorizontalScrollPercent수평 스크롤 현재 위치
HorizontalViewSize수평 스크롤 뷰의 크기
VerticallyScrollable수직 스크롤 가능 여부
VerticalScrollPercent수직 스크롤 현재 위치
VerticalViewSize수직 스크롤 뷰의 크기

[표 5.12] ScrollPatternInformation 구조체의 속성

그리고 ScrollPattern 클래스에서는 Scroll, ScrollHorizontal, ScrollVertical, SetScrollPercent 메서드를 제공하여 프로그램 방식으로 제어할 수 있습니다.

public void ScrollHorizontal(ScrollAmount horz_amount, ScrollAmount vert_amount)
public void ScrollHorizontal(ScrollAmount amount)
public void ScrollVertical(ScrollAmount amount)
public void SetScrollPercent(double horizontalPercent, double verticalPercent)

또한 ScrollPattern 클래스에서는 식별에 사용하는 정적 멤버 필드를 제공하고 있습니다.

멤버명설명
HorizontallyScrollablePropertyHorizontallyScrollable 속성 식별
HorizontalScrollPercentPropertyHorizontalScrollPercent 속성 식별
HorizontalViewSizePropertyHorizontalViewSize 속성 식별
NoScroll스크롤 하지 못하게 지정
PatternScrollPattern 식별
VerticallyScrollablePropertyVerticallyScrollable 속성 식별
VerticalScrollPercentPropertyVerticalScrollPercent 속성 식별
VerticalViewSizePropertyVerticalViewSize 속성 식별

[표 5.13] ScrollPattern 클래스의 정적 멤버 필드

11) ScrollItemPattern

ScrollItemPattern은 ScrollPattern의 자식 컨트롤에서 지원하는 패턴입니다.

System.Object
System.Windows.Automation.BasePattern
System.Windows.Automation.ScrollItemPattern

네임스페이스:  System.Windows.Automation
어셈블리:  UIAutomationClient(UIAutomationClient.dll)

그리고 ScrollItemPattern 클래스에서는 ScrollInfoView 메서드를 제공하여 부모 컨테이너 컨트롤의 표시 영역 내에 나타날 수 있게 스크롤을 제어할 수 있습니다.

또한 ScrollPattern 클래스에서는 식별에 사용하는 정적 멤버 필드 Pattern을 제공합니다.

ScrollItemPattern sip= GetScrollItemPattern(ae);
if (sip == null){    return;    }
try
{
   sip.ScrollIntoView();
}
catch{    }