잠재적으로 많은 수의 항목을 포함 할 수있는 목록 상자가 있습니다. 데이터 가상화를 처리하기 위해 ObservableCollection과 동일한 인터페이스를 구현하는 컬렉션을 작성하여 WPF의 UI 가상화에 연결하고 필요에 따라 지원 데이터를 회전시킬 수 있습니다.목록 상자 데이터 가상화 및 다중 선택
잘 작동합니다. 문제는 목록 상자에 다중 선택을 도입했을 때입니다. listbox는 인덱스 (SelectedItems)가 아닌 객체별로 선택된 항목을 관리하기 때문에 모든 항목을 선택하면 목록 상자에서 모든 보조 데이터가 스핀 업되고 메모리에 보관되어 데이터 가상화를 무효화합니다.
ListBox를 다시 작성하는 대신 오브젝트 대신 인덱스를 사용하여 선택을 관리하는 것 이외의 일이 발생하지 않도록하는 방법은 무엇입니까?
감사합니다.
Eric
필요에 따라 아이템을로드하고 싶기 때문에 원하는 것을 정확하게 얻은 것 같습니다. "모두 선택"하려면로드해야합니다. 맞습니까? TBH, 나는 목록 상자의 CTRL-A (모두 선택)를 무시하고 아무 것도하지 않는 명령 (기본적으로 해제)에 연결합니다. 바인딩을 통해이 작업을 수행 할 수 있는지 또는 목록 상자의 하위 클래스를 파생해야하는지 여부는 확실하지 않습니다. –
아닙니다. 실제로 볼 수있는 항목 만 데이터를로드하려고하지만 목록이 표시 될 때 선택되도록 항목이 오프 스크린 인 경우에도 목록 상자에서 선택된 인덱스 목록을 유지하려고합니다. 나는 사용자가 ctrl-a도 사용할 수있게하고 싶습니다. 모든 항목을 선택하지 못하도록하고 싶지 않습니다. – esc861
죄송합니다. 코드를 게시 할 권한이 없지만 유사한 상황이있어서 ListView로 이동 한 것입니다.하지만 ListBox를 사용하여 수행 할 수 있다고 생각합니다. CheckBox를 사용하여 템플릿을 하나 선택하여 사용하십시오. 그렇게하면 항목 수준에서 선택 (선택)을 처리하고 ListBox에서 선택한 항목의 모음을 관리하지 않아도됩니다. Check 이벤트 처리에 대한 더 나은 제어를 위해이 작업을 수행했지만 가상화 작업에서도 문제가 없다고 생각합니다. LostFocus 이벤트와 마찬가지로 UpdateSourceTrigger = PropertyChanged를 사용하면 ListItem에 문제가있을 수 있습니다. – Paparazzi