Ответ Anurag будет работать очень хорошо для вас, если вы хотите добавить кнопки до создания экземпляра сетки , в частности, перед добавлением столбца в сетку.
Если вы хотите добавить кнопку в ячейку сетки после того, как сетка уже построена , вы можете сделать это, внеся изменения в объект DataGridCell. Сначала вы должны найти его:
- Найдите
DataGridCell
, используя DataGridColumn.GetCellContent
- Используйте
VisualTreeHelper
для сканирования визуального дерева до DataGridCell
Как только это будет сделано, есть несколько способов добавить кнопку в DataGridCell, в зависимости от того, чего вы пытаетесь достичь:
- Установите
DataGridCell.Template
на ControlTemplate, содержащий кнопки и другой стиль, который вы пожелаете, -OR-
- Установите
DataGridCell.ContentTemplate
на шаблон данных, содержащий кнопки и другие нужные элементы, -ИЛИ-
- У вашего столбца
DataTemplate
есть панель-заполнитель для хранения новых кнопок, выполните поиск по дереву визуальных элементов для этой панели по Name
и добавьте к ней свою кнопку.
Альтернативный подход, который не требует поиска ячейки:
- Включите свойство
ObservableCollection<T>
в модель представления, которая предоставляет информацию для создания кнопок
- В вашем
DataTemplate
есть ItemsControl
, который ссылается на это свойство, и DataTemplate
, который может создать правильную кнопку из типа T
- Если вы хотите добавить кнопку, просто добавьте элемент в свойство
ObservableCollection