2012-01-11 3 views
3

약 2,000 개의 정렬 된 항목과 선택한 항목이있는 .NET 4.0 WPF DataGrid가 있습니다. DataGrid는 별도의 스레드에서 500ms마다 업데이트되어 항목이 추가되거나 제거됩니다. 각 업데이트 후에 항목 모음이 정렬됩니다.DataGrid 항목의 자동 업데이트

선택한 항목이 목록의 중간에있는 경우 여러 번 업데이트 한 후 가시적 인 영역에서 벗어나는 경우가 종종 있습니다. 사용자가 눈치 채지 못하게 DataGrid를 업데이트하는 방법을 찾고 있습니다. 즉, 선택한 항목을 보이는 영역의 동일한 위치에 유지하십시오.

지금까지 내가 어떻게이 문제를 해결하는 방법이 개 아이디어를 가지고 있지만 그들 중 누구도 자랑스럽게 저를하지 않습니다 :

  1. 변경 설명서, 즉 자동에서 업데이트 프로세스는 보류중인 업데이트의 수와 텍스트 영역을 넣어 및 "업데이트"버튼이 있습니다. 내 제품 소유자와 다시 협상해야하기 때문에 바람직하지 않습니다.
  2. 각 업데이트 전에 항목을 반복하여 표시 항목 (this 접근법 사용)의 모음을 가져 와서 표시 항목 내에서 선택한 항목의 상대적 위치를 가져옵니다. 그런 다음 업데이트를 실행하고 ScrollIntoView을 사용하여 선택한 항목을 초기 위치로 스크롤합니다. 이 문제는 500 밀리 초마다 모든 항목을 루프 처리해야한다는 문제가 있습니다. 이는 프로세서에 대한 많은 작업입니다.

TopIndex 속성을 사용하여 WinForms에서이 문제를 해결하는 데 사용했지만 WPF에는이 문제가 없습니다.

요약하면 사용자가 관심 항목을 추적하지 않고도 정렬되고 자주 업데이트되는 DataGrid에서 항목을 추가/삭제하는 방법에 대한 아이디어는 매우 높이 평가됩니다.

답변

3

아마도 ScrollViewer와 그 멤버 인 VerticalOffset, ScrollToVerticalOffset을 살펴볼 수 있습니다. 도움이되는지 알려주세요

+1

+1 : 나는 또한 추천합니다. 마지막 위치를 기억하고 마지막으로 알려진 위치로 업데이트 스크롤을 한 후 ... – SvenG

+0

그것은 훌륭하고 정확하게 제가 찾고있는 것입니다. 고마워, 신사. – Pavel