WPF 自定义数据网格幻像 header 重叠

WPF custom datagrid phantom header overlap

我编写了一个派生自 Datagrid 的自定义控件。 当我使用自定义网格时,它会在其他列后面显示一个重叠列 header,我不确定为什么。 这是我的问题的屏幕截图:

这是我用来称呼它的XAML:

<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>

在 code-behind 中,我将 ItemsSource 设置为名为 JurisdictionData 的 object。 看起来它是 auto-generating 列 header,然后生成正确的列。为什么要创建此 JurisdictionData header 我如何 stop/remove 它?

DataGridColumnHeader 对象使用包含 DataGridColumnHeadersPresenter 对象。 我编写的自定义数据网格为 DataGridColumnHeader 创建自定义样式,但不为 DataGridColumnHeadersPresenter 创建自定义样式。 为了解决这个问题,我为 DataGridColumnHeadersPresenter 创建了一个样式,它只包含自定义数据网格 Style.Resources 部分中的 ItemsPresenter。

<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>

回答关于