WPF DataGrid со стилем ячейки - другой стиль ячейки в одном столбце - PullRequest
0 голосов
/ 18 ноября 2010

Мне было просто интересно, как я могу назначить другой стиль ячейки для одного столбца? Стиль ячейки может быть комбинированным или текстовым. Изображение загружено. Это действительно сложно?

Я хочу отобразить таблицу в сетке данных. Первый столбец должен быть именем поля таблицы, второй столбец должен быть значением столбца. Теперь, если тип данных ячейки первого столбца - var char, тогда ячейка второго столбца должна отображать текстовое поле. если тип данных ячейки первого столбца - int, то ячейка второго столбца должна отображать поле со списком.

DataGrid Cell Style

Спасибо, N avatar

alt text

Ответы [ 2 ]

1 голос
/ 19 ноября 2010

Вы можете:

  • Извлечь из DataGridBoundColumn (или одного из его производных) и переопределить защищенное переопределение

    FrameworkElement GenerateElement (ячейка DataGridCell, объект dataItem)

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

  • Используйте столбец шаблона и в шаблоне ячейки используйте триггеры данных для замены элемента пользовательского интерфейса, который вы хотите отобразить.
0 голосов
/ 18 ноября 2010

Задавая этот вопрос, имейте в виду, что существует два разных типа таблиц данных WPF.Тот, который выпущен на CodePlex в WPFToolkit, который использует .NET Framework 3.5 SP1.А более новый WPF DataGrid выпущен как встроенный элемент управления в WP4, который использует .NET Framework 4.0.

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

При этом я нашел статью на C # Corner , который описывает, как отображать комбинированный список в ячейке, когда ячейка находится в режиме редактирования.Это может помочь вам.Если вы начнете здесь, вы можете обнаружить, что можете расширить этот пример кода в соответствии со своими потребностями.И в тех случаях, когда вам нужно использовать текстовое поле вместо поля со списком при редактировании, вы, вероятно, могли бы установить поле со списком, чтобы разрешить ввод новых значений, по существу, позволяя пользователю вводить значения в текстовое поле, когда нужный элемент недоступен.Не уверен, что это то, что вы хотите, но я по крайней мере хотел дать вам кое-что, чтобы пережевать.

Удачи,

...