К сожалению, это не так просто, как должно быть,
Помните, что заголовок группы CheckBox
имеет DataContext
, который представляет собой особый вид объекта с именем GroupItem
. В этом GroupItem
есть свойство Name
, которое представляет собой значение, которое группа представляет, т.е. общее значение, на основании которого произошла группировка.
Многие люди путают это со свойством описания группы, например, Если вы добавили GroupDescription
со свойством EmployeeStatus
в число ваших CollectionView
сотрудников, то GroupItem.Name
НЕ будет EmployeeStatus
, но на самом деле это значение, по которому была создана группа, например Present
, Absent
, OnLeave
и т. Д.
Имея это знание, давайте попробуем достичь того, что вы ищете ...
Мы называем флажок заголовка, скажем «HeaderCheckBox»
<CheckBox x:Name="HeaderCheckBox" ...>
Мы обрабатываем Button.Click
(пузырьковое вложенное событие) на уровне ListView.
<ListView Button.Click="HandleCheckBoxClick" ...>
В обработчике HandleButtonClick
мы делаем следующий код ....
private void HandleCheckBoxClick(object sender, RoutedEventArgs e)
{
var checkBox = e.OriginalSource as CheckBox;
if (checkBox != null && checkBox.Name == "HeaderCheckBox")
{
var groupItem = checkBox.DataContext as GroupItem;
//// Assuming MyItem is the item level class and MyGroupedProperty
//// is the grouped property that you have added to the grouped
//// description in your CollectionView.
foreach (MyItem item in groupItem.Items)
{
//// Place your code for the items under that particular group.
}
}
}
К сожалению, это единственный способ достичь того, что вы ищете. Если вы используете MVVM, весь код должен быть выполнен с помощью прикрепленного поведения.
Дайте мне знать, если это поможет.