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>
回答关于 。
我编写了一个派生自 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>
回答关于