2012-02-28 19 views
5

Supongo que tengo una cuadrícula con 4 columnas y quiero poner un cuadro de texto en la segunda columna y extenderlo a la última columna. ¿Cómo podría ajustar el ancho del cuadro de texto para que sea tan ancho como las 3 últimas columnas?¿Cómo ajustar el ancho del cuadro de texto con un conjunto de columnas en una cuadrícula?

He intentado algo con Borders, pero no funcionó.

<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

Ver mi respuesta actualizada. – Maheep

Respuesta

7

Proporcione a TextBox cierto ancho o haga que ColumnDefinition sea * en lugar de Auto. Se extiende hasta la última columna, pero simplemente no puede verlo, ya que el ancho es Automático.

+0

No funcionó ... No depende del ancho de la columna. Podría establecer el ancho de las columnas como cualquier valor, solo quiero que mi cuadro de texto tenga el mismo ancho que las tres últimas columnas juntas. –

+0

@GuilhermeCampos Necesita definir todas las columnas 'Ancho =" * "', no solo la columna en la que está 'TextBox'. – Rachel

+0

Bueno, funcionó como @Dipesh y @Rachel dijo. Pero, por una razón que no sé, no funcionó en mi código real (con otras cosas), el 'Grid.ColumnSpan' no funcionó como se suponía que debía hacer. Ya tengo otros 'Textboxes' en otras filas en la misma' Grilla' ¿Sabes por qué esto podría pasar? –

3

En este momento las últimas 3 columnas se ajustan al cuadro de texto ya que el ancho es automático.

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

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

Se debe tener en cuenta que un ancho de 'Auto' significa' "solo ocupa el espacio necesario para representar los controles dentro de estas columnas" ', mientras que un ancho de' * 'significa' "divide el espacio de manera uniforme entre todas las columnas * de tamaño "'. Así que el ejemplo de Balam es dividir el espacio de manera uniforme entre 4 columnas, y estirar el 'TextBox' en 3 de ellas, por lo que el ancho final de' TextBox' será de 3/4 del ancho de su cuadrícula. – Rachel

2

Como Dipesh Bhatt ha puesto justamente en su respuesta que la solución a su problema es poner * o algo específico como el ancho de las columnas.

Lo que sucede en su ejemplo es el ancho automático para la columna dice "tome tanto se requiere" por lo tanto, requiere muy poco ancho, ya que el cuadro de texto vacío requerirá un ancho muy pequeño, que es apenas visible.

A * en el ancho de la columna dice "adquiere el espacio disponible" esto aumentará el ancho de la columna, por lo tanto, dará más espacio al cuadro de texto.

Esto significa que ya ha logrado lo que quería, pero es apenas visible debido al ancho mínimo de las columnas.

+1

Solo como una nota extra: su cuadro de texto debe tener una Alineación Horizontal de 'Estirar'. Debe por defecto, pero por las dudas ... – Liz

+0

@Liz: De acuerdo. No mencioné, ya que este es el comportamiento predeterminado. – Maheep

Cuestiones relacionadas