У меня есть сетка данных, связанная с наблюдаемой коллекцией.
У них есть большое количество столбцов / свойств, с которыми мне приходится работать.
Мне нужно сделать замену строки в столбце, выбранном пользователем во время выполнения через выпадающий список.
Итак, сначала я выясняю индекс столбца (в нашем случае Description index = 2, начиная с 0), а затем выполняю подстановки с помощью приведенного ниже кода. Переменная iii указывает текущую строку
DataGridRow row = (DataGridRow)dtgFeatures.ItemContainerGenerator.ContainerFromIndex(iii);
if (row != null)
{
var content = dtgFeatures.Columns[indexColumnToOperateOn].GetCellContent(row);
if (content != null)
{
string str = ((TextBlock)content).Text;
if (str.ToUpper().Trim().Contains(tbxSrc.Text.ToUpper().Trim()))
{
((TextBlock)content).Text = str.Replace(tbxSrc.Text, tbxDest.Text);
obcCfgPartPrograms = (ObservableCollection < CfgPartPrograms >) dtgFeatures.ItemsSource;
}
}
}
В нашем примере мы можем изменить строку «pcacd» на «AAA»
Так что «графически» работает, но наблюдаемая коллекция не обновляется с помощью команды obcCfgPartPrograms = (ObservableCollection ) dtgFeatures.ItemsSource;
Я знаю, что могу сделать это через каждое свойство, но это было бы неприятно для
- EDIT -
Извините от комментариев, которые я вижу, я не дал понять, Мой плохой.
Итак, у меня очень большое количество свойств (здесь 9, но, возможно, много, много других), поэтому я бы не писал что-то вроде:
if(comboBoxValue="Description")
obc.Description = dtgFeatures[2,row];
else if(comboBoxValue="Notes")
obc.Description = dtgFeatures[4,row];
...
Поскольку я могу вручную отредактировать сетку данных и отразить изменения в наблюдаемой коллекции
datagrid РУЧНОЕ РЕДАКТИРОВАНИЕ ---> изменения в наблюдаемой коллекции
почему бы не иметь возможности ПРОГРАММНО (например, со сравнением строк) отредактировать сетку данных и отразить изменения на объекте?
datagrid АВТОМАТИЧЕСКОЕ РЕДАКТИРОВАНИЕ ---> изменения в наблюдаемой коллекции
Итак, вкратце:
1. Я могу изменить сетку данных -> dtgFeatures [property_X, row_Y] = "AAAAAA";
2. Я хотел бы иметь возможность автоматически изменять obc [Y] .X = "AAAAAA";
их очень много.
Спасибо за любую помощь
Patrick