검색 기능을 구현할 때 (예 : 기본 전자 메일 응용 프로그램의 검색과 같은 기능) - 50 개 항목으로 구성된 목록 상자가 있습니다. 각 항목은 문자열 필드가있는 클래스 객체에 바인딩됩니다. 문자열 필드 중 하나에서 검색 상자에 텍스트가있는 항목을 검색하고 표시하려고합니다. 사용자가 텍스트 상자에 키를 입력 할 때 ... - 두 가지 방법을 시도했습니다. ->입력하는 동안 검색 성능을 향상시키는 방법은 무엇입니까?
1 >> 사용 CollectionViewSource
는 -에서 모든 항목에 CollectionViewSource를 바운드 DB
- CollectionViewSource에 목록 상자를 바인딩
-에 그 함수 t에 대한 검색 수 - CollectionViewSource의 필터 속성을 설정 내선을 항목의 검색 상자에 넣고 모든 키 업 이벤트에서 e.Accepted -를 설정하십시오.
- 필터링은 잘 작동하지만 50 개 항목으로 느려집니다. (- 각 항목을 취하는 필터의 추측과 e.Accepted 속성을 설정할지 확인 의 keyup에 -하지만 부하에 대한 진정한
.... 하나의 DB 호출에 CollectionViewSource
2 >> 필터 @의 DB 수준
하여 파일러에 disply 할 요소를 결정하는 처리의 많은 것 같다 - 검색 상자에있는 텍스트를 검색 문자열이있는 객체의 ObservableCollection을 반환하는 ViewModel로 전송
- ObservableCollection이 목록 상자에 바인딩 됨
.... 최상위 레이어는 처리하지 않지만 각 Keypress에는 여러 DB 호출 - 여전히 느리지 만 접근법보다 빠릅니다.
다른 권장 사항이 있습니까? 또는 위에서 언급 한 접근법을 더욱 최적화하기위한 제안? - 검색을 원활하게 작동하도록 조정할 필요가 있습니까?
당신은 X 밀리 세컨드로 검색 조치를 지연하여 검색 프로세스를 더욱 최적화 할 수 있습니다
당신은 샘플 의 검색이 가 가 http://stackoverflow.com/questions/5782585/filtering-an-observablecollection – JSJ
안녕 난 이미 그 짓을 .. 방법 1을 참조하십시오 ...이 되었습니까 누군가가 성능을 향상시키기위한 아이디어가 있는지 궁금해합니다 ... 항목이 몇 개 있지만 괜찮 으면 좋겠지 만 50 개 항목으로 눈에 띄게 느립니다 ... – chancyjohn
다음으로는 읽기 전용 항목으로 가야한다고 생각합니다. 그것은 성능을 끈기있게 증가시킬 것입니다. – JSJ