концепция сетки данных wpf? привержен?

#c# #wpf #datagrid

Вопрос:

Я сражаюсь с СЕТКОЙ ДАННЫХ WPF. [Эта сетка содержит столбец, в который я хотел бы, чтобы пользователь ввел несколько чисел. Я хотел бы зафиксировать эти числа по мере их ввода, проверить их, сохранить в базе данных и заполнить другой столбец (только для чтения) на основе входного значения. Я нахожусь на стадии захвата этого небольшого развития.]

Эта страница…

https://docs.microsoft.com/en-us/windows/communitytoolkit/controls/datagrid_guidance/editing_inputvalidation

… содержит это утверждение …

«Редактирование на уровне ячейки фиксируется при переходе в другую ячейку в той же строке».

Что означает «преданный» в этом контексте?

Когда я создаю объект, который питает мои строки сетки, 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 , чтобы правильно обрабатывать изменения.