Почему редактирование данных в сетке данных wpf не вызывает событие «set» свойства binded? - PullRequest
0 голосов
/ 03 января 2019

Это очень упрощенная версия моего кода.У меня есть DataGrid, привязанный к DataTable:

<DataGrid ItemsSource="{Binding Path=DtTest}" />

, и в моем классе DataContext у меня есть свойство:

public DataTable DtTest { get; set; }

Если я изменяю DataTable DtTest по коду, относительный «набор»Событие сработает.Но если пользователи изменяют данные во время выполнения через сетку данных, событие «set» не сработает, даже если данные в dataTable правильно обновлены !

Мне нужно вызвать пользовательское событие, когда происходит событие set.Кстати, это поведение DataGrid звучит для меня очень странно: например, если я использую текстовое поле, событие «set» всегда запускается, когда текст редактируется пользователем.В чем здесь проблема?Как я могу реализовать это событие, следуя самым чистым способом?

1 Ответ

0 голосов
/ 03 января 2019

Почему это так?

Почему изменение "внутри" DataTable вызовет установщик члена, содержащего DataTable?

Сеттер будет вызываться только по этой линии

this.DtTest = new DataTable();

по этой линии

this.DtTest.TableName = "Hello World";

не будет вызывать сеттер.

Ваш пример с TextBox отличается, потому что нет никакого "внутреннего" значения, которое будет изменено.Элемент, который он сам изменяет, нет TextProperty.Value, который будет установлен, но вместо него будет установлен только TextProperty.

Вы можете попытаться прослушать подходящее событие DataGrid: DataGridСобытия

Например, CellEndEditing или RowEndEditing

Или прослушивание подходящего события DataTable: DataTable Events

Например, RowChanged или ColumnChanged

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...