0

我正在尝试自定义 DataGrid。我想在列标题上方插入一些内容。我正在尝试使用 ControlTemplate 来执行此操作。我在下面有我的 XAML 代码。我的问题是<ContentPresenter />没有输出任何东西。当我加载页面时,afterTextBlock 直接出现在 TextBlock 下方,before中间没有任何内容。我想在该空间中显示列标题。

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

如何在beforeTextBlock 和afterTextBlock 之间显示列标题?我的 List 对象只是一些具有几个公共属性的通用类的 BindingList。

4

1 回答 1

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>
于 2013-08-19T18:11:05.210 回答