2011-07-13 26 views
13

tengo una cuadrícula de 3 columnas y 2 filasen WPF ¿Cómo hago una cuadrícula de datos se ajusta a la altura de la ventana

 <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="Auto"/> 
      <ColumnDefinition Width="10"/> 
      <ColumnDefinition Width="*"/> 
     </Grid.ColumnDefinitions> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="Auto"/> 
      <RowDefinition Height="*"/> 
     </Grid.RowDefinitions> 

que la celda inferior izquierda, tengo una cuadrícula de datos, con AutoGenerateColumns = verdad que puede cargar muchas filas. Lo que quiero hacer es maximizar la altura de la cuadrícula de datos para que se ajuste a la ventana y que el usuario pueda usar la barra de desplazamiento de la cuadrícula de datos para desplazar las filas hacia arriba y hacia abajo.

Lo que pasa es que los flujos de DataGrid de la parte inferior de la ventana, e incluso si fijo el

ScrollViewer.VerticalScrollBarVisibility="Visible" 

de la cuadrícula de datos, la barra de desplazamiento no tiene efecto y las filas fluya hacia abajo. De alguna manera, la cuadrícula de datos no se siente restringida ...

¿Qué hacer?

+1

Dar un poco de ancho a la cuadrícula de datos puede resolver su problema ... si no desea un ancho de código rígido puede hacer algún tipo de enlace de elemento para lograr esto. .. – Bathineni

+0

Me preocupa la altura ... – GilShalit

+0

lo siento ... solo estoy hablando de la altura ... es un error tipográfico ... Darle un alto a la cuadrícula de datos puede resolver su problema ... si no quiere la altura del código duro puede hacer algún tipo o f elemento vinculante para lograr esto ... – Bathineni

Respuesta

31

intente configurar de su cuadrícula de datos HorizontalAlignment=Stretch y VerticalScrollBarVisibility=Auto

Si eso no funciona, también puede ser necesario para unirse Altura de la rejilla de la ventana de altura para que no se auto-crecer para adaptarse a su contenido. Por lo general, yo uso Height="{Binding RelativeSource={RelativeSource AncestorType={x:Type Window}}, Path=ActualHeight}" (que podría ser RenderSize.ActualHeight en lugar de sólo ActualHeight ... se me olvidó.

Otra alternativa es utilizar una DockPanel en lugar de un Grid ya que el control no crecimiento automático para adaptarse a su contenido. En su lugar, Estirará su último hijo para llenar el espacio restante.

+0

ideas interesantes. Los probaré e informaré de nuevo :-) – GilShalit

+0

La técnica de encuadernación funcionaba como un amuleto, ¡Gracias! Y es ActualPath como escribiste. Por cierto, ¿cómo puedo unir algo a una fracción de un valor de ruta? Path = ActualPath/2 no parece funcionar. – GilShalit

+1

@Gilshalit Necesitará usar un convertidor para ese – Rachel

1

Debe definir la columna y la fila donde está DataGrid con *. Usted dice que está en la celda inferior izquierda. La fila está bien, pero su columna tiene Width="Auto".

El AutoGenerateColumns=True da un lío si Width="Auto".

+0

Tenga en cuenta que esto hará que la barra de desplazamiento horizontal no se muestre aunque configure 'ScrollViewer.HorizontalScrollBarVisibility =" Auto "' – mauris

Cuestiones relacionadas