Tùy thuộc vào ngữ nghĩa chính xác mà bạn mong muốn, các giải pháp có thể rất đơn giản:
Nếu thư mục gốc của cây của bạn là bất cứ điều gì nhưng một TreeView
- ví dụ nếu nó là một đồng bằng ItemsControl
- tất cả TreeViewItems trong cây sẽ được lựa chọn độc lập để bạn về cơ bản nhận được mulitiselect miễn phí. Vì vậy, chỉ cần sử dụng một số ItemsControl
thay vì một số TreeView
cho thư mục gốc của cây của bạn.
Giải pháp này có lợi ích vô cùng đơn giản để thực hiện. Nó khác với giải pháp của mattdlong trong đó:
- Giải pháp của ông bỏ chọn tất cả các mục khác khi một mục được nhấp, vì vậy bạn phải bấm ctrl để chọn nhiều mục.
- Với giải pháp này, một nhấp chuột duy nhất sẽ chọn/bỏ chọn mục bạn đã nhấp vào, nhưng không có cách nào để nhanh chóng chọn một mục và đồng thời bỏ chọn tất cả các mục khác.
Sự khác biệt là điều hướng bàn phím (phím mũi tên) trong giải pháp của anh ấy bỏ chọn tất cả các mục, trong khi điều hướng bàn phím giải pháp này không bỏ chọn mục.
Bạn nên chọn giữa các giải pháp này dựa trên ngữ nghĩa bạn thích (nhấp chuột duy nhất để thêm mục vs nhấn ctrl để thêm mục, v.v.). Nếu bạn muốn có thêm ngữ nghĩa nâng cao, chẳng hạn như Shift-Click, vv, nó tương đối để thêm vào.
Lưu ý rằng bạn cũng có thể TreeViewItems custom style sử dụng một ToggleButton
hoặc CheckBox
bất cứ nơi nào trong ItemContainerTemplate
có Checked={Binding IsSelected}
. Điều này cho phép người dùng chọn các mục bằng cách nhấp vào ToggleButton
hoặc CheckBox
.
Nguồn
2010-01-19 05:19:00
Hãy nhìn vào cuộc thảo luận này: http://stackoverflow.com/questions/459375/customizing-the-treeview-to-allow-multi-select/9297158#9297158 –
Kiểm tra câu trả lời của tôi ở đây: http://stackoverflow.com/a/13412801/166452 –