Когда у меня есть простой DataSet
, в котором есть таблица с простыми именами столбцов (то есть без пробелов или точек), код, подобный следующему, работает просто отлично:
DataGrid resultsGrid=...; // Actually defined in the XAML
DataSet ds=...; // The is the DataSet that contains one table
Binding binding = new Binding();
resultsGrid.DataContext=ds.Tables[0];
resultsGrid.SetBinding(DataGrid.ItemsSourceProperty, binding);
DataGrid в вышеприведенном примере имеет атрибут AutoGenerateColumns
, установленный на True
, и правильно заполняет свои данные из таблицы в DataSet
.
Однако, если в моей таблице есть столбцы с именами, содержащими пробелы / точки или другие специальные символы, автоматическое связывание может завершиться неудачно. Я получаю ошибки, такие как:
Сведения о System.Windows.Data: 20: BindingExpression не может
восстановить значение из-за отсутствия информации. BindingExpression: Path = My
Имя полковника; DataItem = 'DataRowView' (HashCode = 8146871); целевой элемент
is 'TextBlock' (Name = ''); Целевым свойством является «Текст» (тип «Строка»)
Очевидно, что автоматически сгенерированное выражение привязки Path=My Col. Name
недопустимо. Весь путь должен быть «заключен в кавычки», чтобы можно было использовать пробелы и точки. Есть ли способ придерживаться AutoGeneratedColumns
для таблиц с более сложными именами столбцов, или я должен идти все вручную сейчас?