You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WPF DataGrid表头模板中TextBox无法占满可用空间问题排查

问题原因及解决方案

你的问题出在两个关键点:

  • DataGrid列头的默认容器(DataGridColumnHeader)的HorizontalContentAlignment属性默认值为Left,导致模板内的Grid无法填满整个列头宽度。
  • 模板里的TextBox默认HorizontalAlignment是Left,即便Grid的列宽设为*,它也不会自动拉伸占据可用空间。

修复步骤:

  1. 修改FileNameHeaderTemplate,给Grid添加HorizontalAlignment="Stretch",同时给TextBox设置HorizontalAlignment="Stretch":
<DataTemplate x:Key="FileNameHeaderTemplate">
    <Grid HorizontalAlignment="Stretch">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="Auto" />
            <ColumnDefinition Width="*" />
        </Grid.ColumnDefinitions>
        <Label Grid.Column="0" Content="Filename" />
        <TextBox Grid.Column="1" HorizontalAlignment="Stretch" />
    </Grid>
</DataTemplate>
  1. 给DataGridTextColumn设置HeaderStyle,让列头容器的内容水平拉伸:
<DataGridTextColumn Binding="{Binding FileName}" HeaderTemplate="{StaticResource FileNameHeaderTemplate}">
    <DataGridTextColumn.HeaderStyle>
        <Style TargetType="DataGridColumnHeader">
            <Setter Property="HorizontalContentAlignment" Value="Stretch" />
        </Style>
    </DataGridTextColumn.HeaderStyle>
</DataGridTextColumn>

修改完成后,TextBox就能完全占据列头的可用剩余空间。

内容的提问来源于stack exchange,提问作者David McCallum

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 19:52:02