Как настроить отображение заголовков столбцов в моей таблице данных WPF?

Я пытаюсь настроить DataGrid. Я хочу вставить некоторый контент над заголовками столбцов. Я пытаюсь использовать ControlTemplate для этого. У меня есть код XAML ниже. Моя проблема в том, что <ContentPresenter /> ничего не выводит. Когда я загружаю страницу, after TextBlock появляется прямо под before TextBlock без ничего между. Я хочу отобразить заголовки столбцов в этом пространстве.

<DataGrid ItemsSource="{Binding List}" AutoGenerateColumns="True">

    <DataGrid.Template>
        <ControlTemplate>
            <StackPanel Orientation="Vertical">
                <TextBlock>before</TextBlock>
                <ContentPresenter /> <!-- outputs nothing -->
                <TextBlock>after</TextBlock>                        
                <ItemsPresenter />
            </StackPanel>
        </ControlTemplate>
    </DataGrid.Template>

</DataGrid>

Как отобразить заголовки столбцов между before TextBlock и after TextBlock? Мой объект List - это просто BindingList некоторого универсального класса, который имеет несколько открытых свойств.

1 ответ

Решение

Я нашел ответ. Я должен использовать <DataGridColumnHeadersPresenter /> вместо <ContentPresenter />, Так что мой код, который работает, выглядит так:

<DataGrid ItemsSource="{Binding List}" AutoGenerateColumns="True">

    <DataGrid.Template>
        <ControlTemplate>
            <StackPanel Orientation="Vertical">
                <TextBlock>before</TextBlock>
                <DataGridColumnHeadersPresenter />
                <TextBlock>after</TextBlock>
                <ItemsPresenter />
            </StackPanel>                        
        </ControlTemplate>
    </DataGrid.Template>

</DataGrid>
Другие вопросы по тегам