모든 항목을로드하고 WPF ListView에 표시 한 후 어떤 이벤트가 발생합니까? ListView에서 많은 항목을 표시하도록 최적화하려고합니다. ListView에는 다음 코드가있는 Items가 채워집니다.모든 항목을로드하고 ListView에 표시 한 후 어떤 이벤트가 발생합니까?
List<Artist> selectedArtistsList;
//Code to fill selectedArtistsList with about 6,000 items not shown here
CollectionViewSource selection1ViewSource = ((CollectionViewSource)(this.FindResource("selection1Source")));
Stopwatch stopWatch1 = new Stopwatch();
stopWatch1.Start();
selection1ViewSource.Source = selectedArtistsList;
stopWatch1.Stop();
Debug.Print("Time used: {0}ms", stopWatch1.ElapsedMilliseconds.ToString());
이 코드를 실행하면 "119ms가 사용 된 시간"또는 유사한 내용이 표시됩니다. 그러나 ListView에있는 Item을 화면에서보기 전에 약 3 초 정도 더 걸립니다. ListView를 항목과 함께로드 한 후에 발생하는 이벤트가 있습니까? ListView가 사용자에게 준비되었을 때 측정하는 데 관심이 있습니다.
'listView.ItemContainerGenerator.ItemsChanged'을 사용해보세요. WPF는 별도의 스레드에서 렌더링되므로 렌더링이 완료된 후 코드를 실행하려면 Dispatcher.Invoke를 우선 순위 <렌더링 –
으로 시도해 볼 수 있습니다. 3 초가 지나면 가상화되지 않을 수 있습니다. XAML을 게시하십시오. – Paparazzi
감사합니다. @Blam, 가상 화에 대해 확인하겠습니다. 이제는 내 목록을 표시하는 데 걸리는 시간을 정확히 확인하는 방법을 알고 나면 코드 개선을 위해 여러 가지 방법을 비교하는 것이 더 쉬울 것입니다. – Edgar