Ответ 1
Думаю, вам придется иметь дело с кодом для этого...
Пример:
Класс тестирования:
public class TestRow
{
private bool[] _values = new bool[10];
public bool[] Values
{
get { return _values; }
set { _values = value; }
}
public TestRow(int seed)
{
Random random = new Random(seed);
for (int i = 0; i < Values.Length; i++)
{
Values[i] = random.Next(0, 2) == 0 ? false : true;
}
}
}
Как сгенерировать тестовые данные и столбцы:
DataGrid grid = new DataGrid();
var data = new TestRow[] { new TestRow(1), new TestRow(2), new TestRow(3) };
grid.AutoGenerateColumns = false;
for (int i = 0; i < data[0].Values.Length; i++)
{
var col = new DataGridCheckBoxColumn();
//Here i bind to the various indices.
var binding = new Binding("Values[" + i + "]");
col.Binding = binding;
grid.Columns.Add(col);
}
grid.ItemsSource = data;
Как выглядит (не хватает заголовков и всего, конечно)
Изменить: Чтобы сделать вышеописанный очиститель кода, вы должны открыть статическое свойство в вашем классе элементов, которое равномерно используется при создании массивов, используя data[0].Values.Length
при создании столбцов, очевидно, может исключение, если сбор данных пуст.