I have written a custom control which derives from Datagrid. When I use the custom grid, it displays an overlapping column header behind others and I'm not sure why. Here's a screenshot of my issue:
Here's the XAML I use to call it:
<FDG:FilterDataGrid x:Name ="Jurisds" MaxHeight="400" AutoGenerateColumns="False" VerticalScrollBarVisibility="Visible" HeadersVisibility="Column">
<DataGrid.Columns>
<DataGridTextColumn Header="Region" Binding = "{Binding Region, Mode=OneWay}"/>
<DataGridTextColumn Header = "Municipality" Binding = "{Binding Jurisd, Mode=OneWay}"/>
<DataGridTextColumn Header = "Analysis" Binding = "{Binding AnalysisExists, Mode=OneWay}" />
<DataGridTextColumn Header = "Brief" Binding = "{Binding StratBriefExists, Mode=OneWay}" />
<DataGridHyperlinkColumn Header="Missing Nbhds" Binding="{Binding MissingNbhds, Mode=OneWay}">
<DataGridHyperlinkColumn.ElementStyle>
<Style>
<EventSetter Event="Hyperlink.Click" Handler="nbhdsScreen"/>
</Style>
</DataGridHyperlinkColumn.ElementStyle>
</DataGridHyperlinkColumn>
<DataGridHyperlinkColumn Header="All Strats Approved" Binding="{Binding StratsApproved, Mode=OneWay}">
<DataGridHyperlinkColumn.ElementStyle>
<Style>
<EventSetter Event="Hyperlink.Click" Handler="stratsScreen"/>
</Style>
</DataGridHyperlinkColumn.ElementStyle>
</DataGridHyperlinkColumn>
</DataGrid.Columns>
</FDG:FilterDataGrid>
In the code-behind I set the ItemsSource to an object called JurisdictionData. It looks like it's auto-generating a column header and then generating the proper columns. Why is it creating this JurisdictionData header and how do I stop/remove it?
A DataGridColumnHeader object uses contains a DataGridColumnHeadersPresenter object. The custom Data Grid that I wrote create a custom style for the DataGridColumnHeader, but not for the DataGridColumnHeadersPresenter. To correct the issue, I created a style for the DataGridColumnHeadersPresenter which contained only the ItemsPresenter in the custom datagrid Style.Resources section.
<Style TargetType="{x:Type DataGridColumnHeadersPresenter}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type DataGridColumnHeadersPresenter}">
<Grid>
<!--<DataGridColumnHeader x:Name="PART_FillerColumnHeader" IsHitTestVisible="False" />-->
<ItemsPresenter />
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Answer about PART_FillerColumnHeader.