Как настроить отображение заголовков столбцов в моей таблице данных 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>