Witam, w WPF tworzę DataGrida i podpinam pod niego kolekcję jako źródło. Każdy element kolekcji ma pole typu Bool, i dla każdego boola generuje mi się CheckBox, jednak chcę by te checkboxy działały jak radiobuttony, tzn. tylko jeden naraz może być zaznaczony. Napisałem klasę dziedziczącą po DataGridCheckBoxColumn, żeby przypisać nowo tworzonym CheckBoxom zdarzenia zaznaczania, jednak nie wiem jak w metodzie obsługującej te zdarzenia dobrać się do całej kolekcji, by móc sprawdzać czy któryś nie jest zaznaczony zanim zaznaczę inny. Oto kod:
private void dataGrid_configuration_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
{
if (e.PropertyType == typeof(bool))
{
CustomDataGridCheckBoxColumn checkBoxColumn = new CustomDataGridCheckBoxColumn();
checkBoxColumn.Header = e.Column.Header;
checkBoxColumn.Binding = new Binding(e.PropertyName);
checkBoxColumn.IsThreeState = true;
// Replace the auto-generated column with the checkBoxColumn.
e.Column = checkBoxColumn;
}
}
public class CustomDataGridCheckBoxColumn : DataGridCheckBoxColumn
{
protected override FrameworkElement GenerateEditingElement(DataGridCell cell, object dataItem)
{
CheckBox checkBox = base.GenerateEditingElement(cell, dataItem) as CheckBox;
checkBox.Checked += new RoutedEventHandler(HandleClick);
checkBox.Unchecked += new RoutedEventHandler(HandleClick);
return checkBox;
}
protected override FrameworkElement GenerateElement(DataGridCell cell, object dataItem)
{
CheckBox checkBox = base.GenerateEditingElement(cell, dataItem) as CheckBox;
checkBox.Checked += new RoutedEventHandler(HandleClick);
checkBox.Unchecked += new RoutedEventHandler(HandleClick);
return checkBox;
}
public void HandleClick(object sender, RoutedEventArgs e)
{
}
}
Jak poprawnie osiągnąć to o co mi chodzi?