2012-03-29 4 views
0

WPF 응용 프로그램에 목록 상자가 있습니다. 사용자가 위쪽으로 스크롤하고 새 항목이 도착하면 (ObversableCollection) 새 항목이 새로운 항목으로 표시됩니다.새 ListBox 항목 자동 표시 방지 방법

새 항목이 도착하면 스크롤 위치가 변경되지 않아 새로운 항목이 원본 상단 항목보다 시야가 흐려지지 않도록 동작을 변경할 수 있습니까?

답변

0

ObservbleCollection 상단에 새 항목을 삽입하여 목록 상자 위에 표시되는 것처럼 보입니다. 그들을 소스의 끝에 추가하면 ListBox의 끝에 표시됩니다. 또는 (예를 들어 CollectionViewSource를 통해) 정렬이 필요한 경우 마지막에 추가 된 항목을 표시하도록 정렬 논리를 수정해야합니다.

+0

날짜별로 정렬 됨 - 가장 최신 항목 (트위터 클라이언트의 경우 의미가 있음). 이 경우 정렬을 변경할 수 없습니다. ( –

0

ScrollIntoView 메서드가 있지만 목록의 어딘가에 위치가 유지되지는 않습니다. 항목이 아래에 있으면 마지막 위치에 놓입니다. 따라서 아이템이 아래에있는 것처럼 주먹을 밀어보기 위해 마지막으로 "적절한"시간을보기로하면 마지막 위치로 가져옵니다. 3의 간단한 목록이 있고 ListView Height = 40으로 만들었으므로 2에 대한 공간 만있었습니다. 다음 항목은 첫 번째 항목을 보지 못하도록 밀었습니다.

lvKDNames.ScrollIntoView (liIDName [2]);

높이 = 자동이면 적절한 마지막 항목을 결정하기가 더 어려울 수 있지만 가능한 접근 방법입니다.

+0

흠 - 실제로 갈 수있는 방법 일 수 있습니다. 어쨌든 Oberservable 컬렉션의 컬렉션 변경 이벤트에서 새롭게 추가 된 항목의 날짜가 더 오래된 것인지 확인할 수 있습니다. 현재 최상위보다 - 표시가 완료된 후에도 ScrollIntoView를 다시 두 번째 것입니다. 새 항목의 카운터를 사용하면 스크롤 할 필요가있는 인덱스를 항상 알 수 있습니다. –

+0

이것은 시도 할 항목입니다. 의견을 제공하는 경우 (그리고 정확히 어떻게) 내가 예상대로 일하고있어. 고마워 :) –