메서드에 대한 정보를 포함하여 IItemContainerProvider를 구현하기 위한 지침 및 규칙에 대해 설명합니다.
ItemContainer 컨트롤 패턴은 항목 가상화를 지원하는 데 사용됩니다.
많은 수의 자식 항목이 포함된 컨트롤은 가상화를 사용하여 항목을 효율적으로 관리할 수 있습니다. 가상화를 사용하면 컨트롤은 지정된 시간에 항목의 하위 집합에 대해서만 메모리에 전체 정보를 유지 관리합니다. 일반적으로 하위 집합에는 현재 사용자에게 표시되는 항목만 포함됩니다. 나머지 가상화된 항목에 대한 전체 정보는 스토리지에 보관되며, 예를 들어 새 항목이 사용자에게 표시될 때 컨트롤에 필요하므로 메모리에 로드되거나 실현됩니다.
예를 들어 다음 다이어그램은 수천 개의 가상화된 항목이 포함된 목록 상자를 보여 줍니다. 컨트롤은 현재 표시되는 자식 항목에 대해서만 전체 정보를 유지 관리하므로 공급자는 항목 100-127에 대해서만 Microsoft UI 자동화 요소를 노출할 수 있습니다.
가상화를 사용하는 컨트롤은 실현된(가상화되지 않은) 항목만 UI 자동화 트리의 UI 자동화 요소로 완전히 사용할 수 있기 때문에 어려운 일입니다. 가상화된 항목이 트리에 없으므로 해당 항목에 대한 정보를 사용할 수 없습니다.
가상화된 항목에 대한 정보를 제공하기 위해 공급자는 IItemContainerProvider 인터페이스를 노출하는 ItemContainer 컨트롤 패턴을 구현합니다.
FindItemByProperty 메서드는 Name, AutomationId 또는 IsSelected와 같은 특정 속성의 값을 기반으로 자식 항목을 찾습니다. 항목이 가상화되면 FindItemByProperty는 항목에 대한 UI 자동화 자리 표시자 요소를 검색합니다. 자리 표시자 요소는 VirtualizedItem 컨트롤 패턴만 지원하는 IRawElementProviderSimple 인터페이스의 구현입니다.
propertyId 매개 변수가 0이면 공급자는 pStartAfter 다음에 다음 항목을 반환해야 합니다.
pStartAfter 매개 변수가 NULL이고 propertyId가 0이면 공급자는 컨테이너의 첫 번째 항목을 반환해야 합니다.
propertyId 매개 변수가 0이면 값 매개 변수가 무시됩니다.
다음 지침 및 요구 사항은 UI 자동화 트리의 가상화된 항목에 대한 자리 표시자 요소에 적용됩니다.
공급자는 자리 표시자 요소에 대해 더 많은 속성 및 컨트롤 패턴을 지원하는 것이 권장되지만 VirtualizedItem 컨트롤 패턴만 필요합니다.
IItemContainerProvider::FindItemByProperty가 다시 호출되면 공급자가 이전 자리 표시자 요소를 무효화할 수 있습니다. (클라이언트가 자리 표시자 요소를 인식해야 하는 경우 즉시 수행해야 합니다. 그렇지 않으면 FindItemByProperty 가 다시 호출되거나 뷰포트가 어떤 이유로든 변경되면 요소가 무효화될 수 있습니다.)
스크롤 또는 크기 조정과 같은 UI 작업으로 인해 컨테이너의 뷰포트가 변경되고 새 자식 항목 집합이 표시될 수 있습니다. 이 경우 이전에 검색한 자리 표시자 요소를 UI 자동화 트리에서 사용할 수 없습니다.
공급자는 컨테이너 개체의 뷰포트에서 화면에서 사용할 수 있는 UI 요소를 가상화해서는 안 됩니다.
The app user experience often defines the success of your app. This learning path will focus on how to provide the best app navigation, and build the best UI using themes, icons, images, personalization, different form factors, and controls.