What is it about DataTable Column Names with dots that makes them unsuitable for WPF’s DataGrid control?

You can keep AutoGenerateColumns set to true and add an eventhandler to deal with any periods (or other special characters):

    <DataGrid
    Name="r2"
          ItemsSource="{Binding Path=.}"
          AutoGeneratingColumn="r2_AutoGeneratingColumn">
    </DataGrid>

Codebehind:

private void r2_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
{
    if (e.PropertyName.Contains('.') && e.Column is DataGridBoundColumn)
    {
        DataGridBoundColumn dataGridBoundColumn = e.Column as DataGridBoundColumn;
        dataGridBoundColumn.Binding = new Binding("[" + e.PropertyName + "]");
    }
}

This worked better for me in a MVVM scenario.

Leave a Comment