Хотя изменение строк и редактирование содержимого ячейки в DataTable отражаются в DataGrid (работает для меня), вы правы, что ColumnChanges, похоже, не так.Если вы используете опцию AutoGenerateColumns, то я полагаю, что это происходит при инициализации, но впоследствии не отслеживает изменения.
Если вы можете найти событие, которое срабатывает (я не заметил), когда столбец добавляется в DataTable, вы можете затем добавить его вручную в коде позади.Другой способ, который может или не может быть практичным, состоит в том, чтобы установить для вашего свойства DataTable значение null, а затем повторно установить для вашего свойства значение DataTable, при этом OnPropertyChanged вызывается каждый раз.Это должно заставить восстановление DataGrid.
private DataTable _myDataTable;
public DataTable MyDataTable
{
get { return _myDataTable; }
set
{
_myDataTable = value;
OnPropertyChanged("MyDataTable");
}
}
void SomeMethod()
{
....results in column changes
DataTable holder;
holder = MyDataTable
MyDataTable = null;
MyDataTable = holder;
}