我写了一个自Datagrid派生的自定义控件。 当我使用自定义网格时,它在其他网格后面显示一个重叠的列标题,我不确定为什么。 这是我的问题的屏幕截图:
这是我用来称呼它的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>
在后面的代码中,我将ItemsSource设置为名为 JurisdictionData 的对象。 看起来它是自动生成列标题,然后生成适当的列。为什么要创建此JurisdictionData标头,以及如何停止/删除它?
答案 0 :(得分:0)
使用的DataGridColumnHeader对象包含一个DataGridColumnHeadersPresenter对象。 我编写的自定义数据网格为DataGridColumnHeader创建了自定义样式,但没有为DataGridColumnHeadersPresenter创建自定义样式。 为了解决此问题,我为DataGridColumnHeadersPresenter创建了一种样式,该样式仅在自定义datagrid 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>