DataGrid игнорирует добавление столбцов

84
14 июля 2021, 13:20

Есть DataGrid:

<DataGrid x:Name="c_dataGrid" ItemsSource="{Binding myDT.DefaultView, UpdateSourceTrigger=PropertyChanged}"
                              AutoGenerateColumns="True" 
                              CanUserAddRows="False" CanUserDeleteRows="False"
                              CanUserReorderColumns="False" CanUserResizeColumns="False"
                              CanUserResizeRows="False" CanUserSortColumns="False"
                              HorizontalScrollBarVisibility="Hidden" VerticalScrollBarVisibility="Hidden".>

Изначально, мы привязывает к ней DataTable: public DataTable myDT { get; set; }. Если мы изменяем, например, заголовок столбца через DataTable, то он изменяется и на форме, но если мы добавляем новый столбец в DataTable, например вот так: dataTable.Columns.Add("NewRowName", typeof(string), ""); или вот так:

dataTable.Columns.Add("NewRowName");
foreach (DataRow dataTableRow in dataTable.Rows) {
    dataTableRow["NewRowName"] = "";
}

То ничего не происходит, в DataTable столбец добавился, а на форму - нет.

Как это исправить?

Answer 1

Если честно, то не знаю, почему это работает, возможно криво работает INotifyPropertyChanged внутри DataTable, но обнуление коллекции исправило мою проблему.

Создаем событие для оповещения об изменении коллекции:

public delegate void DataTableUpdated(DataTable dt);
public event DataTableUpdated DataTableUpdate;

В кострукторе VM подписываемся на событие:

DataTableUpdate += dt => {
                          myDT = null;
                          myDT = dt;
                         };

Вполне возможно, что это не самый лучший вариант.

READ ALSO
Как изменить мета тег Title в админке WordPress?

Как изменить мета тег Title в админке WordPress?

Как изменить заголовок именно в админке WordPress? Нужно убрать именно слово "WordPress", которое добавляется после заголовка на каждой странице в админкеМожет,...

90
Телеграмм не отправляет запрос через webhook

Телеграмм не отправляет запрос через webhook

При отправке сообщения боту не отправляется запрос через webhookWebhook успешно установил, у домена есть SSL-сертификат от Let's Encrypt, рейтинг А

98
Авторизация через Госуслуги

Авторизация через Госуслуги

Пробую сделать авторизацию через ГосуслугиПорядок подключения сайта понятен

125
Symfony 4: обновление ролей

Symfony 4: обновление ролей

Столкнулся со следующей проблемой: когда изменяю права/роли у пользователя, то ему необходимо перезайти в свой аккаунт, чтобы они обновилисьМожно...

116