2014-12-22 3 views
1

winjs를 사용하는 Windows Phone 8.1 응용 프로그램의 경우 listview에서 끝없는 스크롤 기능을 구현해야합니다. 이것을 구현하는 가장 쉽고/가능한 방법이 있습니까? 처음 엔 'n'개의 항목이로드되고, 목록의 맨 아래에 도달하면 항목의 다음 세트가로드됩니다 ... 등등.winjs를 사용하여 끝없이 스크롤하는 목록보기

어떤 도움이나 제안이라도 대단히 감사하겠습니다.

답변

0

내가 여기에 제 7 장에서, 내 무료 전자 책, Programming Windows Store Apps with HTML, CSS, and JavaScript, 2nd Edition의 사이드 바에서 이것에 대해 쓴 그 비트의 :

외에도 잠재적으로 매우 큰하지만 알려진 컬렉션에서

, 다른 모음, 모든 의도 및 목적, 본질적으로 무제한, 신생대 시대 (적어도 인터넷 계산에 의해!)에 다시 기지개하는 항목의 수백만을 가지고 있을지도 모르는 뉴스 피드처럼 . 이러한 컬렉션을 사용하면 에있는 아이템의 수를 알 수 없을 것입니다. 당신이 할 수있는 최선은 단지 사용자가 을 원할 때 다른 청크를로드하는 것입니다.

ListView에 자체 가 자동으로 적절한 시간에 항목의 또 다른 배치를로드하기위한 지원을 제공하지 않지만

는 는 데이터 소스 또는 항목 렌더링 기능 중 하나 내에서 할 상대적으로 간단합니다. 목록의 끝에있는 근처의 항목 요청을 살펴보고 (더 이상 원하는 경우) 트리거를 사용하여 더 많은 항목을로드하십시오. 아이템 렌더러 내에서 아이템의 위치를 ​​확인하십시오. 이것은 ListView의 뷰포트가 콜렉션과 관련된 위치를 알려줍니다. 데이터 소스에서 은 countAfter 인수가 현재 목록의 끝을 초과하는 경우 itemsFromIndex와 같은 IListDataAdapter 메서드에서 색인이나 키를 봅니다. 어느 쪽이든, 컬렉션에 더 많은 항목을로드하면 컨트롤에 대한 변경 알림이 생성됩니다. 컨트롤은 소스의 getCount 메소드를 응답으로 호출하고 이에 따라 스크롤바를 업데이트합니다.

HTML ListView incremental loading behavior sample의 시나리오 2와 3에서 약간의 데모를 볼 수 있습니다. 이는 항목 렌더러에서 필요할 때 Binding.List에 항목을 추가합니다.

+0

안녕하세요 Kraig : 답변 해 주셔서 감사합니다. 그러나 그 샘플에서는 더 많은 항목을로드하기 위해 타이머를 사용 했으므로 특정 시간 지연에 자동으로로드되는 다음 항목 세트를 스크롤하지 않더라도. 하지만 항목의 다음 세트 만로드해야합니다. 목록 끝에 도달하면됩니다. 제안 해 주시겠습니까? –

+0

그 두 가지 방법은 이미 위에 쓴 대답에 있습니다. 항목 렌더링 기능 (항목 요청을 볼 수 있도록 선언적 템플리트 대신 사용하는 기능)에서 수행하거나 데이터 소스에서 수행하십시오. 후자의 경우이 샘플을보십시오. http://code.msdn.microsoft.com/windowsapps/ListView-custom-data-4dcfb128. 렌더링 기능은 http://code.msdn.microsoft.com/windowsapps/ListView-item-templates-7d74826f를 참조하십시오. 내 책의 7 장에 자세히 설명되어 있지만 위에 붙여 넣은 것 이상의 점진적인 시나리오는 다루지 않습니다. –