다음을 통해 공유


가상화된 항목 작업

이 항목에서는 ItemContainerVirtualizedItem 컨트롤 패턴에서 제공하는 기능을 사용하여 가상화된 항목에 대한 정보를 찾고 검색하는 방법을 설명합니다.

가상화 개요

많은 수의 자식 항목이 포함된 컨트롤은 가상화를 사용하여 항목을 효율적으로 관리할 수 있습니다. 가상화를 사용하면 컨트롤은 지정된 시간에 항목의 하위 집합에 대해서만 메모리에 전체 정보를 유지 관리합니다. 일반적으로 하위 집합에는 현재 사용자에게 표시되는 항목만 포함됩니다. 나머지 가상화된 항목에 대한 전체 정보는 스토리지에 보관되며, 예를 들어 새 항목이 사용자에게 표시될 때 컨트롤에 필요하므로 메모리에 로드되거나 실현됩니다.

가상화를 사용하는 컨트롤은 실현된 항목만 UI 자동화 트리에서 Microsoft UI 자동화 요소로 완전히 사용할 수 있기 때문에 어려운 일입니다. 가상화된 항목은 트리에 없으므로 클라이언트에서 해당 항목에 대한 정보를 사용할 수 없습니다. 가상화된 항목에 대한 정보를 검색하기 위해 클라이언트는 UI 자동화 강제로 요청을 전달하여 항목을 컨트롤에 실현하는 방법이 필요합니다. 항목이 실현되면 UI 자동화 UI 자동화 요소를 만들 수 있습니다. UI 자동화 클라이언트가 가상화된 항목으로 작업할 수 있도록 하는 두 가지 컨트롤 패턴인 ItemContainerVirtualizedItem이 포함되어 있습니다.

컨트롤이 가상화를 지원하는 방법

가상화된 항목을 포함할 수 있는 모든 컨트롤은 ItemContainer 컨트롤 패턴을 지원해야 합니다. 또한 가상화할 수 있는 모든 항목은 VirtualizedItem 컨트롤 패턴을 지원해야 합니다. ItemContainer 및 VirtualizedItem 컨트롤 패턴에 의해 노출되는 기능은 IUIAutomationItemContainerPatternIUIAutomationVirtualizedItemPattern 인터페이스를 통해 클라이언트에서 액세스할 수 있습니다.

클라이언트가 가상화된 항목을 찾고 실현하는 방법

클라이언트는 IUIAutomationItemContainerPattern::FindItemByProperty 메서드를 사용하여 특정 속성의 값을 기반으로 컨테이너에서 자식 항목을 검색할 수 있습니다. 메서드는 컨테이너의 첫 번째 항목 또는 지정된 항목 뒤에 있는 항목을 검색할 수도 있습니다. 일치하는 자식 항목이 발견되면 FindItemByProperty 는 항목에 대한 IUIAutomationElement 인터페이스를 검색합니다. 그러나 자식 항목이 가상화된 경우 IUIAutomationElement 인터페이스는 자리 표시자입니다. UIA_E_ELEMENTNOTAVAILABLE 오류는 클라이언트가 IUIAutomationElement 인터페이스를 사용하여 속성 값을 검색하거나 아직 사용할 수 없는 메서드를 호출하려고 할 때 발생합니다. 자리 표시자를 통해 사용할 수 있는 속성 또는 메서드는 컨트롤 구현에 따라 다릅니다. 자리 표시자에 대한 유일한 요구 사항은 IUIAutomationVirtualizedItemPattern 인터페이스를 지원하는 것입니다.

UIA_E_ELEMENTNOTAVAILABLE 오류는 항목이 가상화될 수 있음을 클라이언트에 나타냅니다. 클라이언트는 항목에 대한 IUIAutomationVirtualizedItemPattern 인터페이스를 검색한 다음 IUIAutomationVirtualizedItemPattern::Realiz 메서드를 호출하여 항목을 실현하여 응답해야 합니다. 이 작업이 성공하면 IUIAutomationElement 인터페이스는 사용 가능한 모든 적절한 속성으로 완벽하게 작동합니다.

컨트롤 구현에 따라 IUIAutomationVirtualizedItemPattern::Realize 를 호출하면 컨트롤이 항목을 보기로 스크롤할 수 있습니다. 그러나 클라이언트는 보기로 스크롤하거나 표시할 항목에 의존해서는 안 됩니다. 항목이 표시되는지 확인하기 위해 클라이언트는 IUIAutomationScrollItemPattern::ScrollIntoView 메서드를 사용할 수 있습니다.

예제

가상화에 대한 UI 자동화 지원을 사용하는 방법을 보여 주는 예제 코드는 가상화된 항목을 검색하는 방법을 참조하세요.

UI 자동화 컨트롤 패턴 개요