|
Модераторы: gambit, Kefir, Partizan |
|
erm0l0v |
|
|||
Бывалый Профиль Группа: Участник Сообщений: 157 Регистрация: 11.1.2011 Репутация: нет Всего: 1 |
Старайтесь не использовать WindowsFormsHost, он очень медленный, даже на более простых компонентах. Попробуйте найти аналог на WPF.
Для того чтобы изменения на форме записывались в массив вам в бинденге необходимо указать: UpdateSourceTrigger= PropertyChanged и Mode = TwoWay Для того чтобы на форме отображались данные, вам необходимо унаследовать объект к которому производится биндинг от INotifyPropertyChanged, и кидать событие PropertyChanged с названием свойства которое будет меняться, в вашем случае K_add[i] |
|||
|
||||
leon78 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 33 Регистрация: 10.10.2006 Репутация: нет Всего: нет |
Сделал две коллекции, одна рабочая, другая привязана к DataGrid. При нажатии "Save" параметры второй копируются в первую в цикле, при нажатии "Cancel" наоборот. Неужели это единственное решение?
|
|||
|
||||
Kefir |
|
|||
«Hakuna Matata» Профиль Группа: Комодератор Сообщений: 1878 Регистрация: 25.1.2003 Где: Tampere, Suomi Репутация: 22 Всего: 87 |
Я точно не помню, но по-моему WPF DataGrid плюет на ваш UpdateSourceTrigger для любой колонки кроме DataGridTemplateColumn (ибо там вы все биндинги ручками привязываете напрямую в CellTemplate и CellEditingTemplate. Во всех остальных случаях если я не ошибаюсь DataGrid при генерации ячеек ставит UpdateSourceTrigger=LostFocus (или Explicit, который сам же и коммитит). Так что если хотите контролировать время коммита в сорс - используйте исключительно DataGridTemplateColumn, где вы сами даете темплейты для содержимого ячеек.
Вообще если вкратце - DataGrid это не панацея и не очень любит, когда его используют не так, как это задумывали авторы. Его основная суть - редактирование рядов. Когда вы клацаете по ячейке и что-нибудь редактируете - начинается формальный edit текущего ряда. Когда вы уходите с этого ряда происходит коммит данных обратно в сорс. У вас же случай крайне странный (я слабо представляю зачем вам save/cancel для датагрида, но мало-ли какие бывают случаи). Для того чтобы осуществить ваш замысел с save/cancel вам надо условно говоря предотвращать коммит ряда (смотрите в сторону какого-нибудь RowEditEnding - там вроде есть cancel, это в случае если вы таки используете стандартные колонки, а не templatecolumn) а также в сторону CommitEdit. Также на всякий случай хочу заметить, что DataGrid поддерживает IEditableObject, так что это тоже может как-то облегчить задачу. |
|||
|
||||
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | WPF и Silverlight | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |