Una vez que el gridsplitter se utiliza para cambiar el tamaño de una cuadrícula de la fila * no va a recuperar el espacio cuando se contraen las otras filas.WPF GridSplitter después de cambiar el tamaño de
I tienen la siguiente rejilla en una vista de detalle principal con tres filas. Una cuadrícula de datos en la parte superior de un divisor en el medio y una vista de control de contenido en la última fila. El divisor tiene un botón de cierre para colapsar el detalle. Todo esto funciona con la excepción de que una vez que el usuario cambia el tamaño usando el divisor de grillas.
<Grid Margin="3,0">
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Style="{StaticResource CollapsableRow}"/><!-- Splitter Here -->
<RowDefinition Style="{StaticResource CollapsableRow}"/>
</Grid.RowDefinitions>
El estilo GridSplitter:
<Style x:Key="gridSplitterStyle" TargetType="{x:Type GridSplitter}">
<Setter Property="Visibility" Value="{Binding IsItemSelected, Converter={StaticResource BoolToShow},ConverterParameter='Visible|Collapsed'}" />
<Setter Property="Width" Value="Auto"/>
<Setter Property="Height" Value="14"/>
<Setter Property="HorizontalAlignment" Value="Stretch"/>
<Setter Property="Border.BorderBrush" Value="#FF6593CF" />
<Setter Property="Border.BorderThickness" Value="0,1,0,0" />
<Setter Property="UIElement.SnapsToDevicePixels" Value="True" />
<Setter Property="UIElement.Focusable" Value="False" />
<Setter Property="Control.Padding" Value="7,7,7,7" />
<Setter Property="Cursor" Value="SizeNS" /></Style>
Como dije el colapso funciona correctamente a menos que el gridsplitter se utiliza para cambiar el tamaño. Después de eso, el espacio en blanco permanece.
EDIT: H. B. y codenaked tenido sugerencias simples y por lo consistant y he tratado de ponerlas en práctica w/o el éxito en un activador de datos:
<Style x:Key="CollapsableRow" TargetType="{x:Type RowDefinition}">
<Style.Triggers>
<DataTrigger Binding="{Binding SelectedItem, Converter={StaticResource IsNullConverter}}" Value="True">
<Setter Property="RowDefinition.Height" Value="0"/>
</DataTrigger>
<DataTrigger Binding="{Binding SelectedItem, Converter={StaticResource IsNullConverter}}" Value="False">
<Setter Property="RowDefinition.Height" Value="Auto"/>
</DataTrigger>
</Style.Triggers>
</Style>
Ajuste del gridlength en el código es lo que hay que hacer. Sin embargo, el doble clic no va a funcionar en este caso. El divisor de cuadrícula está siendo diseñado y es realmente un botón en el divisor que cierra. Elijo anular el divisor de cuadrícula y establecer el parent.hiegth allí. –
Mi código era solo un ejemplo, nunca esperé que no hiciera nada en 'DoubleClick'. –