我正在尝试自定义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之间显示列标题? My List对象只是一个具有一些公共属性的泛型类的BindingList。
答案 0 :(得分:2)
我找到了答案。我应该使用<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>