Адаптировать размер текстового поля к размеру столбца в GridView wpf?

#wpf #xaml #gridview #textbox

#wpf #xaml #gridview #текстовое поле

Вопрос:

Привет, я использую a TextBox внутри GridView ячейки столбца.

Я могу правильно размещать и привязывать данные для 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 ширина правильно адаптировалась к ширине столбца «Параметр», даже когда я пытаюсь изменить размер столбцов.
Я попытался установить свойства Width и HorizontalContentAlignment TextBox , но безуспешно.

Сейчас это выглядит так, как показано ниже:

ListView с текстовым полем в столбце quot;Параметрquot;

Кто-нибудь может подсказать, как я могу добиться такого поведения?

Ответ №1:

Вы можете добавить стиль контейнера элемента, для ListViewItem которого устанавливается значение HorizontalContentAlignment Stretch . Вы можете удалить HorizontalContentAlignment атрибут из TextBox .

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