Тип DataGridCheckBoxColumn в настоящее время не предоставляет событие Click, фактически оно не предоставляет никаких событий. Ячейка, отображаемая в столбце этого типа, просто реализует привязку TwoWay между свойством IsChecked элемента управления CheckBox и свойством (указанным в привязке) в экземпляре T в текущей строке ObservableCollection , которой является DataGrid привязан к.
Вы не предоставляете свой Xaml, поэтому я буду использовать пример из своего поста в блоге, на который есть ссылка в вашем вопросе. Обходное решение включает в себя указание DataGridTemplateColumn , содержащего CheckBox, и определение события Click следующим образом:
<data:DataGrid x:Name="FilteredPeople" AutoGenerateColumns="False">
<data:DataGrid.Columns>
<data:DataGridTextColumn Header="First Name" Binding="{Binding FirstName}" />
<data:DataGridTextColumn Header="Age" Binding="{Binding Age}" />
<data:DataGridCheckBoxColumn Header="Visible" Binding="{Binding IsVisible}" />
<data:DataGridTemplateColumn Header="Row Filter">
<data:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox x:Name="RowFilterButton" IsChecked="{Binding IsVisible}"
Content="Filter" Tag="{Binding}" Click="RowFilterButton_Click" />
</DataTemplate>
</data:DataGridTemplateColumn.CellTemplate>
</data:DataGridTemplateColumn>
</data:DataGrid.Columns>
</data:DataGrid>
Альтернативой CheckBox в этом случае может быть ToggleButton или обычный элемент управления Button. Обратите внимание на привязку для свойства Tag CheckBox. Это помогает выяснить, в какой строке был выбран CheckBox из выделенного кода:
private void RowFilterButton_Click(object sender, RoutedEventArgs e)
{
Person person = ((CheckBox)sender).Tag as Person;
}
Затем вы можете удалить этого человека из ObservableCollection или изменить его свойства для фильтрации или обновления DataGrid в зависимости от ситуации.
Обычно этот ответ заканчивается, но если у вас не установлено это обновление установлено в стандартной версии SDK Silverlight 2 DataGrid есть ошибка , которая предотвращает это. В этом случае ошибка будет проявляться в том, что DataGrid не рисует строку, в которой находится CheckBox (вместо того, что вы получаете, выглядит как невидимая строка), если вы заставляете DataGrid фильтроваться при щелчке по этому CheckBox (то есть у флажка есть фокус) .
Чтобы избежать этой ошибки, установите обновление или инициируйте любые манипуляции с ObservableCollection , к которому DataGrid привязан из элемента управления вне строк DataGrid , как в этом примере .