Как согласовать ширину текстового поля с набором столбцов в сетке? - PullRequest
5 голосов
/ 28 февраля 2012

Предположим, у меня есть сетка с 4 столбцами, и я хочу поместить текстовое поле во второй столбец и охватить его последним столбцом. Как я могу подогнать ширину текстового поля по ширине 3 последних столбцов?

Я пробовал что-то с Borders, но это не сработало.

<Grid>
      <Grid.ColumnDefinitions>
           <ColumnDefinition Width="Auto" />
           <ColumnDefinition Width="Auto" />
           <ColumnDefinition Width="Auto" />
           <ColumnDefinition Width="Auto" />
      </Grid.ColumnDefinitions>

      <TextBox Grid.Column="1" Grid.ColumnSpan="3" />
</Grid>

Ответы [ 3 ]

7 голосов
/ 28 февраля 2012

Дайте TextBox некоторую ширину или сделайте ширину ColumnDefinition как * вместо Auto.Он распространяется до последнего столбца, но вы просто не видите его, поскольку ширина равна Авто.

3 голосов
/ 28 февраля 2012

В данный момент последние 3 столбца соответствуют текстовому полю, поскольку ширина указана автоматически.

  <Grid>
  <Grid.ColumnDefinitions>
       <ColumnDefinition Width="*" />
       <ColumnDefinition Width="*" />
       <ColumnDefinition Width="*" />
       <ColumnDefinition Width="*" />
  </Grid.ColumnDefinitions>

  <TextBox Grid.Column="1" Grid.ColumnSpan="3" />
  </Grid>
2 голосов
/ 28 февраля 2012

Как Дипеш Бхатт справедливо указал в своем ответе, что решение вашей проблемы - поставить * или что-то конкретное в качестве ширины для столбцов.

В вашем примере происходит автоматическое изменение ширины столбца: « возьмите столько, сколько требуется », следовательно, это занимает очень небольшую ширину, так как пустое текстовое поле потребует очень очень малой ширины, которая едва заметна.

A * по ширине для столбца говорит: " захватывает все доступное пространство ", это увеличивает ширину столбца и, следовательно, дает больше места для текстового поля.

Это означает, что вы уже достигли того, что хотели, но едва заметны из-за минимальной ширины столбцов.

...