WPF TreeView с [закрытым] множественным выбором

11
задан Justin 7 June 2013 в 11:18
поделиться

1 ответ

В зависимости от точной семантики, которую вы хотите, решение может быть очень простым:

Если корень вашего дерева не является TreeView - например, если это обычный ItemsControl - все TreeViewItems в дереве будут независимо выбираемыми, так что вы, по сути, получаете mulitiselect бесплатно. Поэтому просто используйте ItemsControl вместо TreeView для корня дерева.

Преимущество этого решения в том, что его чрезвычайно просто реализовать. Оно отличается от решения mattdlong тем, что:

  • Его решение отменяет выбор всех других элементов при щелчке на элементе, поэтому для мультивыбора необходимо щелкнуть элементы по Ctrl.
  • В этом решении один щелчок выбирает/отменяет выбор элемента, но нет возможности быстро выбрать элемент и одновременно отменить выбор всех остальных.

Еще одно различие заключается в том, что навигация по клавиатуре (клавиши со стрелками) в его решении отменяет выбор всех элементов, в то время как в этом решении навигация по клавиатуре не отменяет выбор элементов.

Вы должны выбирать между этими решениями, основываясь на семантике, которую вы предпочитаете (одиночный щелчок для добавления элемента против нажатия клавиши Ctrl для добавления элемента и т.д.). Если вам нужна более продвинутая семантика, такая как Shift-Click и т.д., то можно добавить.

Обратите внимание, что вы также можете создать собственный стиль TreeViewItems, используя ToggleButton или CheckBox в любом месте ItemContainerTemplate, который имеет Checked={Binding IsSelected}. Это позволяет пользователю выбирать элементы, нажимая на ToggleButton или CheckBox.

0
ответ дан 3 December 2019 в 08:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: