Пользовательские элементы управления в заголовке DataGrid (не ColumnHeader)

Я хочу расширить DataGrid, чтобы добавить некоторые элементы управления в самый верх элемента управления DataGrid (а не в заголовки столбцов). Другими словами, я хочу отобразить некоторые элементы управления (кнопка добавления / удаления, фильтр TextBox) в верхней половине CustomDataGrid (который наследуется от DataGrid), а затем отобразить DataGrid в нижней половине.

На своих страницах я хочу использовать этот CustomDataGrid и установить его столбцы и другие параметры, которые я обычно устанавливаю для DataGrid по умолчанию.

Как я могу это реализовать?


person MaxWave    schedule 01.06.2011    source источник


Ответы (1)


У вас есть несколько вариантов:

  1. Создайте UserControl, который включает DataGrid плюс ваши дополнительные элементы управления, расположенные над DataGrid, возможно, используя сетку с двумя строками для макета.
  2. Добавьте дополнительные элементы управления прямо в шаблон DataGrid.

Я бы выбрал вариант (1), хотя вы не расширяете Datagrid, это сделать намного проще.

person ColinE    schedule 01.06.2011
comment
Вариант 1 не подходит, потому что я хочу расширить DataGrid. Второй вариант очень интересен, но как это сделать? Я полагаю, есть много xaml для дублирования функциональности DataGrid по умолчанию ... - person MaxWave; 01.06.2011
comment
Зачем нужно расширять DataGrid? Ваш UserControl может раскрыть содержащийся в нем DataGrid, что даст вам тот же результат. В любом случае, да, DataGrid, как и все элементы управления Silverlight, имеет ControlTemplate, который вы можете изменять. - person ColinE; 01.06.2011
comment
Если я использую первый вариант и создаю UserControl, как определить столбцы на любой странице xaml для сетки, которая вложена в UserControl (без сброса сетки)? - person MaxWave; 01.06.2011
comment
Хорошо, я буду использовать UserControl в качестве оболочки для DataGrid по умолчанию. Вы правы. - person MaxWave; 01.06.2011