6 Answers, 1 is accepted
0
Accepted
Hi Evan,
Currently there isn't a "HeaderVisibility" property for the DataGrid column types (see the properties list here).
However, you can achieve this by using a custom HeaderTemplate in conjunction with a HeaderStyle, try this for example:
Regards,
Lance | Tech Support Engineer, Sr.
Progress Telerik
Currently there isn't a "HeaderVisibility" property for the DataGrid column types (see the properties list here).
However, you can achieve this by using a custom HeaderTemplate in conjunction with a HeaderStyle, try this for example:
<
dataGrid:DataGridTextColumn
PropertyName
=
"Title"
>
<
dataGrid:DataGridTextColumn.HeaderStyle
>
<
dataGrid:DataGridColumnHeaderStyle
BorderColor
=
"Transparent"
BorderThickness
=
"0"
BackgroundColor
=
"Transparent"
TextMargin
=
"0"
... />
</
dataGrid:DataGridTextColumn.HeaderStyle
>
<
dataGrid:DataGridTextColumn.HeaderContentTemplate
>
<
DataTemplate
>
<
Grid
Padding
=
"0"
Margin
=
"0"
/>
</
DataTemplate
>
</
dataGrid:DataGridTextColumn.HeaderContentTemplate
>
</
dataGrid:DataGridTextColumn
>
Regards,
Lance | Tech Support Engineer, Sr.
Progress Telerik
Do you want to have your say when we set our development plans?
Do you want to know when a feature you care about is added or when a bug fixed?
Explore the
Telerik Feedback Portal
and vote to affect the priority of the items
0
Evan
Top achievements
Rank 1
answered on 29 Nov 2017, 09:15 PM
Thank you this worked for our needs
0
Michael
Top achievements
Rank 1
answered on 18 Aug 2020, 08:38 PM
This is a good example. But... I am using ExpandoObjects to populate the grid because the number of columns are variable. The above code doesn't work. Any suggestions to hide the headers in this circumstance?
0
Hello Michael,
All you need to do this is access to the column object (it doesn't have to be in XAML).
If you are creating the columns on the fly, then you can do this:
myColumn.HeaderTemplate = GenerateDataTemplateSeenInPreviousReply();
myColumn.HeaderStyle = new DataGridColumnHeaderStyle() { use properties in my last reply };
If you are using AutoGenerateColumns=True, then this get a little trickier because there isn't an OnColumnGenerating event. You will need to decide when the time is right to iterate over all the columns and set the same values.
foreach(var column in MyDataGrid.Columns)
{
column.HeaderTemplate = ...;
column.HeaderStyle = ...;
}
Regards,
Lance | Manager - Technical Support
Progress Telerik
0
Michael
Top achievements
Rank 1
answered on 18 Aug 2020, 09:45 PM
Thank you for the super fast response! Is there a way to do that without code behind? I'm using MVVM and would like to keep the code behind as small as possible.
0
Hello Michael,
Not really. A few ideas I have that you could look into:
- Write a custom behavior that subscribes to the DataBindingComplete event (and access the column sin the behavior)
- Use EventToCommandBehavior with DatabindingComplete event and pass the DataGrid object to the view model (via CommandParameter)
- (unverified) Use OneWayToSource binding for the DataGrid Columns collection. You could then iterate over the Columns in the view model directly.
The bottom line is you need access to the Columns, so you can iterate over them to set their HeaderTemplate and HeaderStyle properties.
Regards,
Lance | Manager - Technical Support
Progress Telerik