Я не знаю, правильное ли это решение, но я пришел к чему-то похожему в отчаянии:
foreach (NavField field in this.Fields)
{
DataGridTextColumn column = new DataGridTextColumn();
column.Header = field.FieldNo.ToString();
//Some other logic
// Hide non active and hidden fields
if (!field.Active || !field.Show)
column.Visibility = System.Windows.Visibility.Collapsed;
grid.Columns.Add(column);
}
Затем я добавляю datatable как itemssource:
this.dataGridLines.ItemsSource = dataTable.DefaultView;
Если я устанавливаю объект данных напрямую, он не заботится о столбцах из данных и автоматически генерирует свои собственные столбцы, не знаю почему ..