powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / ComboBox в DataGrid: как передать выбранное значение в ячейку?
5 сообщений из 5, страница 1 из 1
ComboBox в DataGrid: как передать выбранное значение в ячейку?
    #39549975
хорошо я согласен
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Комбобокс - это "Пол" (м/ж).
Есть два класса
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
People : INotifyPropertyChanged
    Id
    Name
    Sex

Sex : INotifyPropertyChanged
    Id
    Name


Датагрид привязан к People
В нём третий столбец (sex) представляет собой обычный Textblock при отображении и combobox при редактировании.

Ситуация:
В последнем столбце записано "мужской".
Щёлкаю по ячейке, она превращается в combobox, я выбираю "женский". Щёлкаю по ячейке левее (в той же строке) - combobox с моим выбором "женский" исчезает, вместо него рисуется textblock "мужской".
В момент, когда строка теряет фокус, происходит сохранение и всё встаёт на свои места - textblock превращается в "женский".

Как бы мне сделать так, чтобы textblock менял свой text синхронно с выбором combobox?
...
Рейтинг: 0 / 0
ComboBox в DataGrid: как передать выбранное значение в ячейку?
    #39549985
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Насчет того, что там в разметке, местной публике предлагается потелепатировать?
...
Рейтинг: 0 / 0
ComboBox в DataGrid: как передать выбранное значение в ячейку?
    #39550092
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
ComboBox в DataGrid: как передать выбранное значение в ячейку?
    #39550627
хорошо я согласен
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Mejtes https://msdn.microsoft.com/ru-ru/library/system.windows.data.binding.updatesourcetrigger(v=vs.110).aspx
"{Binding Path, UpdateSourceTrigger=PropertyChanged}"
именно так я и делаю.
Получается следующая картина:
Щёлкаю по произвольной строке грида

Начинаю редактирование ячейки с комбобоксом, ячейка из TextBlock превращается в ComboBox

Меняю в выпавшем списке значение (пол был женский, стал мужской) - оно тут же отправляется в источник - это я вижу через отладчик, вылетает брейкпоинт на set
Код: c#
1.
2.
3.
4.
5.
public virtual Sexes Sex
{
    get { return sex; }
    set { sex = value; OnPropertyChanged(); }
}

в классе People: INPC

Меняю фокус на другую ячейку в пределах выделенной строки. Комбобокс превращается обратно в textblock, в котором сидит старое значение.

Дело в том, что я начал редактировать эту строку. Поэтому все изменения будут применены только после завершения редактирования этой строки, то есть, когда фокус сместится на любую другую. Вот тогда в этот момент и произойдёт её обновление из источника.

Вопрос - как сделать так, чтобы обновление было только после завершения редактирования ячейки, а не строки целиком?
...
Рейтинг: 0 / 0
ComboBox в DataGrid: как передать выбранное значение в ячейку?
    #39551372
хорошо я согласен
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Решение, которое мне подошло:
Код: c#
1.
2.
var row = ItemContainerGenerator.ContainerFromItem(item) as FrameworkElement;
row.BindingGroup = null;


Убираю BindingGroup для каждой строки.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / ComboBox в DataGrid: как передать выбранное значение в ячейку?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]