맞춤 MultiSelectionTreeView
을 구현 중입니다. 이 컨트롤은 ItemsControl
에서 상속되며 MultiSelectionTreeViewItem
은 TreeViewItem
에서 상속됩니다. 거대한 데이터 세트 때문에이 컨트롤에 바인딩하려면이 호스트로 VirtualizationStackPanel
을 사용하십시오.가상화 된 컬렉션 항목 컨테이너 일관성
TreeViewItems IsSelected
소품을 ViewModelClass IsSelected
속성에 바인딩했습니다. 트리에서 아래로 스크롤하면 선택한 항목이 뷰포트에서 벗어나 IsSelected
속성이 false로 설정됩니다 (가상화로 인해 Tree에서 MultiSelectionTreeViewItems가 연결 해제 되었기 때문에). 새로운 항목 컨테이너 (MultiSelectionTreeViewItem)가 만들어지고 ViewModel에 따라 IsSelected prop가 true로 설정됩니다.
지금 컨테이너 항목이 밖으로 나가거나 다시 뷰포트로 이동했거나 모델 또는 뷰 모델 계층에 변경 사항이 있었기 때문에 Selected 이벤트가 발생했는지를 판단 할 수 없습니다.
더 나쁜 것은 연결이 끊어진 항목의 IsSelected 속성을 설정할 수 없다는 것입니다. 예를 들어 아래로 스크롤 할 때 더 많은 항목을 Shift 키를 사용하여 선택합니다.
내 제어 구현에서 viewmodel 클래스에 액세스 할 수 없습니다.
아이디어가 있으십니까?
나는 snoop을 사용하여 값이 "local"또는 "binding"으로 지정되었는지 확인합니다. 여기서 bound 값은 녹색으로 강조 표시됩니다. –