2012-02-28 6 views
5

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

Я пробовал что-то с границами, но это не сработало.

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

См. Мой обновленный ответ. – Maheep

ответ

7

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

+0

Это не сработало ... Это не зависит от ширины столбца. Я мог бы установить ширину столбцов как любое значение, просто хочу, чтобы в моем текстовом поле была одинаковая ширина трех последних столбцов. –

+0

@GuilhermeCampos Вам нужно сделать все определения столбцов 'Width =" * "', а не только столбец 'TextBox'. – Rachel

+0

Ну, он работал как @Dipesh и @Rachel. Но - по какой-то причине я не знаю - это не сработало в моем реальном коде (с другими вещами), «Grid.ColumnSpan» не работал так, как его предполагали. У меня уже есть другие «текстовые поля» в других строках в том же «Grid» Знаете ли вы, почему это может случиться? –

3

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

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

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

Следует отметить, что ширина 'Auto' означает' 'занимает только пространство, необходимое для визуализации элементов управления внутри этих столбцов", в то время как ширина '*' означает '" разделяет пространство равномерно между всеми столбцами размера * «'. Таким образом, пример Балама разделяет пространство равномерно между четырьмя столбцами и растягивает «TextBox» на 3 из них, поэтому конечная ширина «TextBox» будет 3/4-й из вашей ширины сетки. – Rachel

2

Как Dipesh Bhatt справедливо поставил в своем ответе, что решение вашей проблемы, чтобы положить * или что-то конкретное, как ширина для столбцов.

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

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

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

+1

Как дополнительное примечание - ваше текстовое поле должно иметь горизонтальное выравнивание 'Stretch'. Он должен по умолчанию, но на всякий случай ... – Liz

+0

@Liz: Согласен. Не упоминал, что это поведение по умолчанию. – Maheep