使 TextBox 大小适应 GridView wpf 中的列大小?

Make the TextBox size adapt to column size in GridView wpf?

您好,我在 GridView 列单元格内使用 TextBox

我能够正确地在 'Parameter' 列中放置和绑定 TextBox 的数据。

<ListView Margin="5"
          ItemsSource="{Binding Variables}"
          Grid.Column="0"
          Grid.Row="1"
          Width="570">
    <ListView.View>
        <GridView>
            <GridViewColumn Header="Type" Width="40"/>
            <GridViewColumn Header="Parameter" Width="80">
                <GridViewColumn.CellTemplate>
                    <DataTemplate>
                        <TextBox Text="{Binding ParameterName}"
                                 Padding="0"
                                 Margin="0"
                                 Width="Auto"
                                 HorizontalContentAlignment="Stretch"/>
                    </DataTemplate>
                </GridViewColumn.CellTemplate>
            </GridViewColumn>
            <GridViewColumn Header="Expression" Width="80"/>
            <GridViewColumn Header="Value" Width="50"/>
            <GridViewColumn Header="Default Value" Width="80"/>
            <GridViewColumn Header="Value Type" Width="80"/>
            <GridViewColumn Header="Show in UI" Width="80"/>
            <GridViewColumn Header="Description" Width="80"/>
        </GridView>
    </ListView.View>
</ListView>

我想要 TextBox 宽度正确适应 'Parameter' 列的宽度,即使我尝试调整列的大小时也是如此。 我尝试设置 TextBoxWidthHorizontalContentAlignment 属性,但没有成功。

现在看起来是这样的:

任何人都可以建议我如何实现这种行为吗?

您可以为 ListViewItem 添加项目容器样式,将 HorizontalContentAlignment 设置为 Stretch。您可以从 TextBox.

中删除 HorizontalContentAlignment 属性
<ListView Margin="5"
          ItemsSource="{Binding Variables}"
          Grid.Column="0"
          Grid.Row="1"
          Width="570">
   <ListView.ItemContainerStyle>
      <Style TargetType="{x:Type ListViewItem}">
         <Setter Property="HorizontalContentAlignment" Value="Stretch"/>
      </Style>
   </ListView.ItemContainerStyle>
   <ListView.View>
      <GridView>
         <GridViewColumn Header="Type" Width="40"/>
         <GridViewColumn Header="Parameter" Width="80">
            <GridViewColumn.CellTemplate>
               <DataTemplate>
                  <TextBox Text="{Binding ParameterName}"
                           Padding="0"
                           Margin="0"
                           Width="Auto"/>
               </DataTemplate>
            </GridViewColumn.CellTemplate>
         </GridViewColumn>
         <GridViewColumn Header="Expression" Width="80"/>
         <GridViewColumn Header="Value" Width="50"/>
         <GridViewColumn Header="Default Value" Width="80"/>
         <GridViewColumn Header="Value Type" Width="80"/>
         <GridViewColumn Header="Show in UI" Width="80"/>
         <GridViewColumn Header="Description" Width="80"/>
      </GridView>
   </ListView.View>
</ListView>