#c# #wpf #datagrid
Вопрос:
Я сражаюсь с СЕТКОЙ ДАННЫХ WPF. [Эта сетка содержит столбец, в который я хотел бы, чтобы пользователь ввел несколько чисел. Я хотел бы зафиксировать эти числа по мере их ввода, проверить их, сохранить в базе данных и заполнить другой столбец (только для чтения) на основе входного значения. Я нахожусь на стадии захвата этого небольшого развития.]
Эта страница…
… содержит это утверждение …
«Редактирование на уровне ячейки фиксируется при переходе в другую ячейку в той же строке».
Что означает «преданный» в этом контексте?
Когда я создаю объект, который питает мои строки сетки, IEditableОбъект, я вижу, что BeginEdit и EndEdit вызываются дважды каждый раз, когда я нажимаю [enter] (редактируется только один столбец). Поскольку эти методы не имеют параметров, как мне определить строку, с которой я имею дело, и получить доступ к введенным данным? Требуются ли также BeginningEdit, CellEditEnding и RowEditEnding?
Я создал тестовое приложение на основе https://docs.microsoft.com/en-us/dotnet/api/system.componentmodel.ieditableobject?view=net-5.0
amp;
https://docs.microsoft.com/en-us/dotnet/api/system.componentmodel.ibindinglist?view=net-5.0
Я добавил клиенту два целых числа: оценка и баллы. Я установил все поля, кроме баллов, только для чтения, и там, где задан балл, я также задаю баллы. Когда я запускал его, я ожидал увидеть отображаемые баллы. Никакой радости.
Когда я изменил !inTxn на inTxn в следующем, бинго!
private void OnCustomerChanged()
{
if (inTxn amp;amp; Parent != null)
{
Parent.CustomerChanged(this);
}
}
Является ли это допустимым поведением?
Является ли документация правильной или неверной?
Что ж, моя радость была недолгой. Добавлена некоторая проверка, и поле «Очки» перестало отображаться. Серьезно. Отказался от этого и не восстановился.
Ответ №1:
Это значит сделать постоянным. Незавершенное редактирование может быть либо зафиксировано, либо откатано. Редактирование ячейки становится постоянным для ее источника данных, когда вы переходите в другую ячейку в той же строке. Далее говорится, что вы должны реализовать IEditableObject
, чтобы правильно обрабатывать изменения.