DataGridCheckBoxColumn Тип в настоящее время не обеспечивает Click событие, на самом деле в настоящее время не предоставляют каких-либо событий. Ячейка, отображаемая в столбце этого типа, просто реализует привязку TwoWay между свойством IsChecked элемента управления CheckBox и свойством (указанным в Binding) в экземпляре T в текущей строке ObservableCollection <T>, что 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 <T> или изменить его свойства, чтобы отфильтровать или обновить DataGrid в зависимости от обстоятельств.
Это нормально, когда этот ответ заканчивается, но если у вас нет this update installed, в стандартной версии DataGrid для Silverlight 2 DataGrid по умолчанию используется SDK, который предотвращает это. В этом случае ошибка будет проявляться с помощью DataGrid, не рисующего строку, в которой находится CheckBox (вместо этого вы получаете видимую невидимую строку), если вы вызываете фильтрацию DataGrid при нажатии этой CheckBox (т. Е. Флажок имеет фокус) ,
Чтобы избежать этой ошибки, установите update или инициировать какие-либо манипуляции ObservableCollection <T> DataGrid привязан к из элемента управления вне строк в DataGrid в as per this example.
Благодарим за помощь. Это намного более чистый метод, а затем использование события ReadyingCellForEdit, поскольку он не требует двойного щелчка пользователя. Спасибо за вашу помощь. –
Просто прочитайте свой ответ, Питер, и этот тэг = «{Binding}» трюк только что сделал мой день, спасибо! – Vinzz