Member 14973663 Ответов: 1

Datagrid WPF C# заполняется кодом без привязки и редактируется во время выполнения


Привет,
I have a WPF app that manages people data. Each person has some attributes and a list of phone numbers. In the main window I have a DataGrid bound to a ObservableCollection, with the individual properties in a few DataGridTextColumn, and a Column with ComboBox, that each one displays each person's phone number list. By now, everything is perfect. What I want, then, is when clicking a MenuItem (that is OK) for edit a person's data, that a child Window opens, and that I have in some TextBox the current values of the person's individual attributes (which I can modify and save without problems) and a DataGrid that displays (1 or several rows with) 2 columns, with a data and the phone number, and a 3rd column with a Button (that's OK) for deleting the row. Here comes my problem. I want to populate this DataGrid, programmatically, by code, without any binding (it's not necesary), to display the person's current phone number list (that are 2 string by row), and also to be able to edit it in runtime (change cell values, add rows, and delete rows), in order to, then by clicking OK Button, update that person's phone number data list (by changing rows, adding, or deleting them) as well as his individual attributes. By now, I only was able to edit existing rows, with binding, but not to add nor delete. I already know how to deal with the database and ADO.NET and handling the program objects and data, I only need to know how populate the DataGrid without binding and to edit it in runtime.
Надеюсь, вы мне поможете. Я подозреваю, что это гораздо проще, чем кажется.
Заранее большое вам спасибо за вашу помощь
С уважением
Пабло

Что я уже пробовал:

Я долго искал, но то, что я увидел, - это сообщения, в которых говорилось, что нужно использовать привязку, и что без нее невозможно редактировать DataGrid во время выполнения.
Я попробовал например:
foreach (TelData data in person.Tels.PhoneNbrs)
компонента DataGrid.Предметы.Добавить данные);
и я прекрасно видел строки, но не мог их редактировать.
Я также попытался обработать событие DataGrid RowEditEnding (с привязкой), где я попытался добавить объекты TelData в список источников, получив доступ к элементу:
e.строка.пункт
но он всегда был нулевым
И я тоже попытался получить доступ
элемент управления DataGrid.Элемент
чтобы проверить кнопку DeleteRow, и она тоже всегда была нулевой.
Определенно, я много искал, но любопытно, что с помощью привязки можно редактировать существующие строки, но не добавлять и не удалять, не создавая исключения.

1 Ответов

Рейтинг:
0

Gerry Schmitz

Ваши "желания" неразумны, тем более что вы уже знаете, как работать с наблюдаемой коллекцией. Вам нужна машина, которая катится без колес. Вы можете это сделать, но вам понадобятся журналы.

Притворитесь, что вы не связываете себя, выбросив наблюдаемую коллекцию, когда закончите (и никому не говорите).