가상화 된 항목 작업Working with Virtualized Items

이 항목에서는 ItemContainerVirtualizedItem 컨트롤 패턴에서 제공 하는 기능을 사용 하 여 가상화 된 항목에 대 한 정보를 찾고 검색 하는 방법에 대해 설명 합니다.This topic describes how to use functionality provided by the ItemContainer and VirtualizedItem control patterns to find and retrieve information about virtualized items.

가상화 개요Overview of Virtualization

많은 수의 자식 항목을 포함 하는 컨트롤은 가상화를 사용 하 여 항목을 효율적으로 관리할 수 있습니다.Controls that contain a large number of child items can use virtualization to efficiently manage the items. 가상화를 사용 하는 경우 컨트롤은 지정 된 시간에 항목의 하위 집합에 대해서만 메모리의 전체 정보를 유지 관리 합니다.With virtualization, the control maintains full information in memory for only a subset of items at any given time. 일반적으로 하위 집합에는 현재 사용자에 게 표시 되는 항목만 포함 됩니다.Typically, the subset includes only those items that are currently visible to the user. 남아 있는 가상화 된 항목에 대 한 전체 정보는 저장소에 보관 되 고, 사용자에 게 새 항목이 표시 되는 경우와 같이 컨트롤에 필요할 때 메모리에 로드 되거나 메모리에 로드 됩니다.Full information about the remaining virtualized items is kept in storage and is loaded into memory, or realized, as the control needs it, for example, as new items become visible to the user.

구현 된 항목만 UI 자동화 트리에서 Microsoft UI 자동화 요소로 완전히 사용할 수 있으므로 가상화를 사용 하는 컨트롤은 챌린지를 나타냅니다.Controls that use virtualization represent a challenge because only realized items are fully available as Microsoft UI Automation elements in the UI Automation tree. 가상화 된 항목은 트리에 없으므로 클라이언트에서 해당 항목에 대 한 정보를 사용할 수 없습니다.Virtualized items do not exist in the tree, so information about them is not available to clients. 가상화 된 항목에 대 한 정보를 검색 하기 위해 클라이언트는 UI 자동화를 통해 항목을 제어 하기 위해 요청을 전달 하는 방법이 필요 합니다.To retrieve information about virtualized items, clients need a way to force UI Automation to pass the request to realize the items to the control. 항목을 인식 한 후 UI 자동화에서 UI 자동화 요소를 만들 수 있습니다.After the items have been realized, UI Automation can create UI Automation elements for them. UI 자동화에는 클라이언트에서 가상화 된 항목 ( ItemContainerVirtualizedItem)을 사용할 수 있도록 하는 두 개의 컨트롤 패턴이 포함 됩니다.UI Automation includes two control patterns to enable clients to work with virtualized items: ItemContainer and VirtualizedItem.

컨트롤에서 가상화를 지 원하는 방법How a Control Supports Virtualization

가상화 된 항목을 포함할 수 있는 모든 컨트롤은 ItemContainer 컨트롤 패턴을 지원 해야 합니다.Any control that can contain virtualized items must support the ItemContainer control pattern. 또한 가상화 할 수 있는 모든 항목은 VirtualizedItem 컨트롤 패턴을 지원 해야 합니다.Further, any item that can be virtualized must support the VirtualizedItem control pattern. ItemContainer 및 VirtualizedItem 컨트롤 패턴에 의해 노출 되는 기능은 클라이언트에서 IUIAutomationItemContainerPatternIUIAutomationVirtualizedItemPattern 인터페이스를 통해 액세스할 수 있습니다.The functionality that is exposed by the ItemContainer and VirtualizedItem control patterns is accessible to clients through the IUIAutomationItemContainerPattern and IUIAutomationVirtualizedItemPattern interfaces.

클라이언트에서 가상화 된 항목을 찾고 실현 하는 방법How Clients Find and Realize Virtualized Items

클라이언트는 IUIAutomationItemContainerPattern:: FindItemByProperty 메서드를 사용 하 여 특정 속성의 값을 기반으로 컨테이너에서 자식 항목을 검색할 수 있습니다.Clients can use the IUIAutomationItemContainerPattern::FindItemByProperty method to search for child items in the container based on the value of a particular property. 메서드는 컨테이너의 첫 번째 항목 또는 지정 된 항목 뒤에 오는 항목을 검색할 수도 있습니다.The method can also retrieve the first item in the container or the item that follows the specified item. 일치 하는 자식 항목이 있는 경우 Finditembyproperty 는 항목에 대 한 IUIAutomationElement 인터페이스를 검색 합니다.If a matching child item is found, the FindItemByProperty retrieves an IUIAutomationElement interface for the item. 그러나 자식 항목을 가상화 하는 경우 IUIAutomationElement 인터페이스는 자리 표시자입니다.However, if the child item is virtualized, the IUIAutomationElement interface is a placeholder. UIA _ E _ elementnotavailable 오류는 클라이언트가 IUIAutomationElement 인터페이스를 사용 하 여 속성 값을 검색 하거나 아직 사용할 수 없는 메서드를 호출 하려고 할 때 발생 합니다.The UIA_E_ELEMENTNOTAVAILABLE error occurs when the client attempts to use the IUIAutomationElement interface to retrieve property values or call methods that are not yet available. 자리 표시자를 통해 사용할 수 있는 속성 또는 메서드는 컨트롤 구현에 따라 달라 집니다.Which properties or methods are available through a placeholder depends on the control implementation. 자리 표시자의 유일한 요구 사항은 IUIAutomationVirtualizedItemPattern 인터페이스를 지 원하는 것입니다.The only requirement for a placeholder is to support the IUIAutomationVirtualizedItemPattern interface.

UIA _ E _ elementnotavailable 오류는 클라이언트가 항목을 가상화 할 수 있음을 나타냅니다.The UIA_E_ELEMENTNOTAVAILABLE error is an indication to the client that an item may be virtualized. 클라이언트는 항목에 대 한 IUIAutomationVirtualizedItemPattern 인터페이스를 검색 한 다음 IUIAutomationVirtualizedItemPattern:: 현실화 메서드를 호출 하 여 항목을 인식 하는 방식으로 응답 해야 합니다.The client should respond by retrieving the IUIAutomationVirtualizedItemPattern interface for the item, and then realizing the item by calling the IUIAutomationVirtualizedItemPattern::Realize method. 이 작업이 성공 하면 IUIAutomationElement 인터페이스가 사용 가능한 적절 한 모든 속성과 완전히 작동 합니다.If this succeeds, the IUIAutomationElement interface is fully functional with all appropriate properties available.

컨트롤 구현에 따라 IUIAutomationVirtualizedItemPattern:: 현실화 를 호출 하면 컨트롤이 항목을 뷰로 스크롤할 수 있습니다.Depending on the control implementation, calling IUIAutomationVirtualizedItemPattern::Realize may cause the control to scroll the item into view. 그러나 클라이언트는 보기에 대 한 항목 스크롤 또는 표시를 사용 하지 않아야 합니다.However, a client should not rely on the item scrolling into view or made visible. 항목이 표시 되도록 하기 위해 클라이언트는 IUIAutomationScrollItemPattern:: ScrollIntoView 메서드를 사용할 수 있습니다.To ensure that the item is visible, the client can use the IUIAutomationScrollItemPattern::ScrollIntoView method.

예제Example

가상화에 대 한 UI 자동화 지원을 사용 하는 방법을 보여 주는 예제 코드는 가상화 된 항목을 검색 하는 방법을 참조 하세요.For example code that shows how to use the UI Automation support for virtualization, see How to Retrieve a Virtualized Item.

UI 자동화 컨트롤 패턴 개요UI Automation Control Patterns Overview