WPF пользовательское перекрытие заголовка фантомной таблицы данных - PullRequest
0 голосов
/ 08 мая 2019

Я написал собственный элемент управления, полученный из Datagrid. Когда я использую пользовательскую сетку, она отображает перекрывающий заголовок столбца позади других, и я не уверен, почему. Вот скриншот моей проблемы:

Phantom column header overlapping actual columns

Вот 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 и как его остановить / удалить?

1 Ответ

0 голосов
/ 08 мая 2019

Используемый объект DataGridColumnHeader содержит объект DataGridColumnHeadersPresenter.Пользовательская сетка данных, которую я написал, создает собственный стиль для DataGridColumnHeader, но не для DataGridColumnHeadersPresenter.Чтобы исправить эту проблему, я создал стиль для DataGridColumnHeadersPresenter, который содержал только ItemsPresenter в пользовательском разделе данных Style.Resources.

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

Ответ о PART_FillerColumnHeader .

...