如何自定义WPF Datagrid中列标题的显示?
我正在尝试自定义DataGrid。我想在列标题上方插入一些内容。我正在尝试使用ControlTemplate来执行此操作。下面是我的XAML代码。我的问题是如何自定义WPF Datagrid中列标题的显示?,wpf,datagrid,controltemplate,contentpresenter,Wpf,Datagrid,Controltemplate,Contentpresenter,我正在尝试自定义DataGrid。我想在列标题上方插入一些内容。我正在尝试使用ControlTemplate来执行此操作。下面是我的XAML代码。我的问题是没有输出任何内容。加载页面时,文本块之后的文本块直接显示在之前的文本块下方,中间没有任何内容。我想在该空间中显示列标题 <DataGrid ItemsSource="{Binding List}" AutoGenerateColumns="True"> <DataGrid.Template>
没有输出任何内容。加载页面时,文本块之后的文本块直接显示在之前的文本块下方,中间没有任何内容。我想在该空间中显示列标题
<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>
之前
之后
如何在前文本块和后文本块之间显示列标题?我的List对象只是一些泛型类的BindingList,它有几个公共属性。我找到了答案。我应该使用
而不是
。因此,我的有效代码如下所示:
<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>
之前
之后