c# - tabla - Gridsplitter: limite las alturas de fila al tamaño de la ventana
como cambiar el tamaño de un datagridview (2)
Acabo de comenzar a experimentar con gridsplitters y he tropezado con un comportamiento muy extraño y parece que no puedo solucionarlo. Aparentemente los otros tienen problemas similares (según google), pero no hubo comentarios útiles.
Tengo una cuadrícula con 2 filas. Al inicio, el inferior tiene una Hight
de 250. La fila superior toma el resto con *
. Cuando cambio el tamaño de las filas con el divisor, el comportamiento es el esperado para la fila superior. Pero cuando arrastro el divisor hacia arriba y más allá de la ventana del programa, el contenido de la fila inferior caerá fuera de la ventana (= mover hacia abajo hasta que desaparezca). Yo esperaría que no puedo hacer que cada fila sea más grande que el contenedor padre.
<Grid x:Name="grid_main" ScrollViewer.VerticalScrollBarVisibility="Disabled" >
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition MinHeight="250" Height="250"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<GridSplitter x:Name="splitter"
ResizeDirection="Rows" Grid.Column="0" Grid.ColumnSpan="1" Grid.Row="0" Width="Auto"
Height="5" HorizontalAlignment="Stretch" VerticalAlignment="Bottom" Margin="0" ResizeBehavior="BasedOnAlignment" />
<Grid Grid.Column="0" Grid.Row="0">
</Grid>
<Grid Grid.Column="0" Grid.Row="1">
</Grid>
</Grid>
Este es mi código El contenido de ambas filas se aloja de nuevo en cuadrículas y se ha eliminado por motivos de simplicidad. Nuevamente: cambiar el tamaño de la fila superior funciona bien. Pero la fila inferior puede redimensionarse al infinito. Funciona como se esperaba si codigo un MaxHeight
. Pero eso tiene que depender del tamaño de la ventana.
Intente cambiar su segunda RowDefinition
de RowDefinition
a lo siguiente:
<RowDefinition MinHeight="250" MaxHeight="{Binding ElementName=grid_main, Path=ActualHeight}" Height="250"/>
Esto asegurará que la altura de la fila no exceda el tamaño de la ventana.
La solución de Richard no funcionó para mí (la altura real de la cuadrícula se expandió más allá del tamaño de la ventana junto con la altura de la fila).
Al usar Snoop, descubrí que la Altura real de un antepasado ContentPresenter no aumentaba. Por lo tanto, la siguiente definición de fila inferior funcionó para mí, aunque todavía veía problemas si configuraba MinHeight en las filas superiores o inferiores:
<RowDefinition Height="430"
MaxHeight="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ContentPresenter}}, Path=ActualHeight}"/>